リソース・マネージャの保護

リソース・マネージャでは、プロビジョニング手順を構成ファイルに設定することで、Oracle Cloud Infrastructureリソースのインストールおよびプロビジョニングを自動化できます。このような構成ファイルは、infrastructure-as-codeモデルに準拠する宣言型言語を使用して、ステップごとのプロビジョニング手順を取得します。プロビジョニング手順は「ジョブ」として実行されます。ジョブを実行するときにプロビジョニングされるOracle Cloud Infrastructureリソースは「スタック」に編成されます。

ジョブの実行やスタックのプロビジョニングは、Oracle Cloud Infrastructure Identity and Access Management (IAM)によって有効化されるロールベース・アクセス制御(RBAC)を使用してゲート管理されます。これにより、Oracle Cloud Infrastructureリソースに対するユーザー・アクセスと、ユーザーがそれらのリソースに行うことができるアクションを管理者がきめ細かく制御できます。

リソース・マネージャのセキュリティ・スキームは、次の3つの要素に基づいています:

  • セキュリティ・グループ。スタックおよびジョブに対して特定の操作を実行する権限を持つ、管理者が定義するグループ。個々のユーザーはセキュリティ・グループに割り当てられ、そのグループによって許可される操作を実行できます。セキュリティ・ポリシーの詳細は、ポリシーの開始を参照してください。ポリシーの仕組みポリシー構文も参照してください。推奨されるリソース・マネージャ・ポリシーは、IAMポリシーを参照してください。
  • 権限セット。ジョブおよびスタックに固有の権限のセット。
  • 操作。許可される操作(またはアクション)と、各操作の実行に必要な権限。

リソース・マネージャで使用される権限セットおよび操作は、リソース・マネージャの詳細を参照してください。

潜在的なセキュリティ・リスクおよび軽減策

Terraformの状態ファイル

Terraformの状態(.tfstate)には、リソースIDなどの機密データや、場合によってはパスワードのような機密ユーザー・データも含まれることがあります。HashiCorpによって、Terraformの状態の処理に関する推奨事項がSensitive Data in Stateという記事で提供されています。

Terraform状態ファイルへのアクセスを制御するには、次のように読取りジョブのアクセスを制限するセキュリティ・ポリシーを作成します:

Allow group <group_name> to read orm-jobs in compartment
ノート

権限read orm-jobsは、ログやTerraform構成の取得など他の操作にも影響するため、制限ポリシーによって他の操作を実行する権限が制限されないコンパートメントに状態ファイルを分離する必要があります。

Terraform構成

通常、リソース・マネージャのワークフローには、後でスタックの管理に使用されるTerraform構成の記述または生成が含まれます。Terraform構成にはリソース・マネージャのAPI GetJobTfConfigを使用してアクセスできるため、構成ファイルに機密情報を含めないことをお薦めします。

IAMポリシー

ポリシーを使用して、 リソース・マネージャへのアクセスを制限します。

重要

Oracle Cloud Infrastructureリソースを管理するためのポリシーは、リソースにアクセスするリソース・マネージャ操作にも必要です。たとえば、コンピュート・インスタンスおよびサブネットを含むスタック上で適用ジョブを実行するには、リソースをプロビジョニングするコンパートメント内で、これらのリソース・タイプに対する権限を付与するポリシーを必要とします。Oracle Cloud Infrastructureリソースを管理するためのポリシーの例は、共通ポリシーを参照してください。

ポリシーは、Oracle Cloud Infrastructureリソースにアクセスできるユーザーとその方法を指定します。詳細は、ポリシーの仕組みを参照してください。

グループに、職責を実行するために必要な最小限の権限を割り当てます。各ポリシーには動詞があります。最小限のアクセス数から使用できる動詞は、inspectreaduseおよびmanageです。

通知ポリシーの詳細は、リソース・マネージャの詳細を参照してください。

スタックとジョブの管理

このポリシーを作成して、テナンシ内のスタックおよびジョブをグループに許可し、テナンシ・スタック上のOracle Cloud Infrastructureリソースを管理できるようにします。

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

このポリシーを作成して、グループが破棄ジョブを実行しないようにします。

ノート

このポリシー・ステートメントでは、read orm-jobsへの新しい権限を含める必要があります。これは、3番目のステートメントにジョブのリストまたは取得に関係ない変数を使用する条件が含まれているためです。
Allow group <group_name> to use orm-stacks in tenancy
Allow group <group_name> to read orm-jobs in tenancy
Allow group <group_name> to manage orm-jobs in tenancy where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}

スタック権限の詳細は、orm-stacksを参照してください。ジョブ権限の詳細は、orm-jobsを参照してください。

プライベート・テンプレートの管理

このポリシーを作成して、テナンシのプライベート・テンプレートを作成、更新、移動および削除する権限をグループに付与します。

Allow group <group_name> to manage orm-template in tenancy

このポリシーを作成して、スタックおよびジョブの管理に加えて、プライベート・テンプレートからスタックを作成する権限をグループに付与します。

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Allow group <group_name> to read orm-templates in tenancy

プライベート・テンプレートの権限の詳細は、orm-templateを参照してください。

構成ソース・プロバイダの管理

このポリシーを作成して、テナンシの構成ソース・プロバイダを作成、更新、移動および削除する権限をグループに付与します。

Allow group <group_name> to manage orm-config-source-providers in tenancy

このポリシーを作成して、スタックおよびジョブの管理に加えて、ソース・コード制御システム(既存の構成ソース・プロバイダを使用して)構成ファイルからスタックを作成する権限をグループに付与します。

Allow group <group_name> to read orm-config-source-providers in tenancy
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

構成ソース・プロバイダの権限の詳細は、orm-config-source-providersを参照してください。