Oracle Cloud Infrastructureドキュメント

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

リソース・マネージャでは、構成ファイルへのプロビジョニング手順をコミットすることで、Oracle Cloud Infrastructureリソースのインストールおよびプロビジョニングを自動化できます。 これらの構成ファイルでは、"infrastructure-as-code"モデルに従った宣言言語を使用したステップ・バイ・ステップのプロビジョニング手順が取得されます。 プロビジョニング手順はジョブとして実行されます。ジョブの実行時にプロビジョニングされるOracle Cloud Infrastructureリソースはスタックに編成されます。

ジョブおよびプロビジョニング・スタックの実行は、Oracle Cloud Infrastructureアイデンティティおよびアクセス管理(IAM)によって有効になっているロールベースのアクセス制御(RBAC)を使用してゲート化されます。 これにより、管理者は、Oracle Cloud Infrastructureリソースに対するユーザー・アクセスと、これらのリソースに対してユーザーが実行できる処理を細かく制御できます。

リソース・マネージャ・セキュリティ・スキームは3つのピラーに位置します:

  • セキュリティ・グループ 管理者定義グループおよびジョブに対して特定の操作を実行する権限を持つグループを定義します。 個々のユーザーはセキュリティ・グループに割り当てられ、そのグループが許可する操作を実行できるようになります。
  • 「パーミッション・セット」 ジョブおよびスタックに固有のパーミッションのセット。 ジョブおよびスタックの権限セットを表1に示します。
  • 操作 許可される操作(またはアクション)およびそれぞれの実行に必要な権限。 これらを表2に示します。

リソース・マネージャ操作と権限

リソース・マネージャは2つのパーミッション・セットをサポートしています: スタック・リソース用、さらにポータル・リソース用です。 表1各リソース・タイプに関連付けられている権限セットがリストされます。

表 1 リソース・タイプおよび権限セット

リソース・タイプ 権限
スタック(orm-stacks)

inspect orm-stackread orm-stack

use orm-stack

create orm-stack

update orm-stack

delete orm-stack

ジョブ(orm-jobs)

inspect orm-job

read orm-job

manage orm-job

前述の表の各権限は、特定のリソース・マネージャ操作に関連付けられています。 次の表に、リソース・マネージャ操作を示し、各操作の実行に必要な権限を示します。 CreateJob操作には2つのアクセス権が必要です。

表 2 リソースの操作および必要な権限

操作 権限
スタックのリストを生成する(ListStacks) inspect orm-stack
スタックの作成(CreateStack) create orm-stack
スタックの取得(GetStack) read orm-stack
スタック(UpdateStack)の更新 update orm-stack
スタックの削除(DeleteStack) delete orm-stack
スタックTerraform構成の取得(GetStackTfConfig) read orm-stack
ジョブのリスト(ListJobs) inspect orm-job
ジョブの作成(CreateJob)

-ラックを使用-

manage orm-job

ジョブの取得(GetJob) read orm-jobs
ジョブの更新(UpdateJob) manage orm-job
ジョブの取消し(CancelJob) manage orm-job
ジョブTerraform状態ファイルの取得(GetJobTfState) read orm-job
ジョブTerraform構成の取得(GetJobTfConfig) read orm-job
ジョブTerraform実行計画の取得(GetJobTfExecutionPlan) read orm-job
ジョブ・ログの取得(GetJobLogs) read orm-job

推奨セキュリティ・ポリシー

次に、リソース・マネージャを保護するためのポリシー推奨を示します。 セキュリティ・ポリシーの詳細は、「ポリシーの開始」を参照してください。 「ポリシーの仕組み」および「ポリシーの構文」も参照してください。

スタックとジョブを管理する権限

次のポリシーは、スタックとジョブの両方を管理する権限を指定したグループに付与し、テナンシ・スタックのリソースを管理する権限も付与します。

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

ユーザーがジョブの破棄を実行できないようにします

特定の操作を実行する権限を付与する他に、特定のアクションを防止するポリシーを作成することもできます。 次のポリシー例では、特定のグループのメンバーがスタック上で破棄ジョブを実行できないように明示的に設定しています。

Allow group <group_name> to use orm-stacks in compartment
Allow group <group_name> to read orm-jobs in compartment
Allow group <group_name> to manage orm-jobs in compartment where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}

文にはジョブのリストまたは取得に関係のない変数を参照するwhere条件が含まれるため、read orm-jobs in compartmentに対する新しい権限を含める必要があります。

ポテンシャル・セキュリティ・リスクおよび軽減

Terraform状態ファイル

Terraform状態 (.tfstate)には、リソースIDなどの機密データを含めることができ、場合によってはパスワードなどの機密ユーザー・データを含めることができます。 HashiCorpでは、記事「機密データの状態」でTerraformの状態を処理するための推奨事項が提供されています。

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

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

ノート

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

Terraform構成.Zipファイル

リソース・マネージャ・ワークフローでは、Terraform構成を.zipファイルとしてサービスにアップロードすることが含まれています。 Terraform構成はORM API (GetJobTfConfig)を使用してアクセスできるため、構成ファイルに機密情報を含めないことを強くお薦めします。