OCIインスタンスの起動・停止用の最低限の権限を付与する方法

OCI General

セキュリティの考慮で、あるユーザ(オペレーター)に対し、Oracle Cloud Infrastructure (OCI) 上のインスタンス (Compute/Oracle Base DB/Autonomous AI DB/MySQL) を起動・停止するため、最低限の権限を付与したいですが、それは可能ですか?答えは、可能です。ポリシーを作れば簡単に実現できますので、実施方法を紹介したいと思います。
Start/Stop OCI instances with minimum IAM policy
インスタンスの種類により少し差異がありますが、考え方は同じです。

事前準備

作業対象インスタンスが、PoCというコンパートメントの下に格納されます。
以下の各リソースを用意しておきます。対象ユーザをそれぞれのグループに入れます。

インスタンスグループ名ポリシー名関連権限
ComputeCompute_Power_GroupCompute_Power_PolicyINSTANCE_POWER_ACTIONS
Oracle Base DBDB_Node_Power_GroupDB_Node_Power_PolicyDB_NODE_POWER_ACTIONS
ADBADB_Update_GroupADB_Update_PolicyAUTONOMOUS_DATABASE_UPDATE
MySQLMySQL_Power_GroupMySQL_Power_PolicyMYSQL_INSTANCE_START
MYSQL_INSTANCE_STOP

1. Compute (VM)

ポリシー・ステートメント
下記2つの書き方を検証して、同じく動作できることを確認しました。差異点は、2行目です。

構文-1 (Where条件あり)
Allow group <Group_Name> to read instances in compartment <Compartment_Name>
Allow group <Group_Name> to manage instances in compartment <Compartment_Name> where request.permission='INSTANCE_POWER_ACTIONS'

注意点:"request.operation"ではなく、"request.permission"となります。

必要に応じて、Compartmentではなく、テナンシでも指定できます(以下の例も同様)。
"to"を省略しても同じ結果です(以下の例も同様)。

構文-2 (Where条件なし)
Allow group <Group_Name> to read instances in compartment <Compartment_Name>
Allow group <Group_Name> to {INSTANCE_POWER_ACTIONS} in compartment <Compartment_Name>

ステートメントの例 (構文-2)
OCI IAM policy for OCI Compute instance

権限付与後、そのユーザが特定のコンパートメント(PoC)の下に、全てのComputeインスタンスが参照できます。それらのインスタンスに対し、起動・停止・再起動しか実施できません。

2. Oracle Base Database

ポリシー・ステートメント
下記2つの書き方を検証して、同じく動作できることを確認しました。差異点は、2行目です。

構文-1 (Where条件あり)
Allow group <Group_Name> to read database-family in compartment <Compartment_Name>
Allow group <Group_Name> to manage db-nodes in compartment <Compartment_Name> where request.permission='DB_NODE_POWER_ACTIONS'

構文-2 (Where条件なし)
Allow group <Group_Name> to read database-family in compartment <Compartment_Name>
Allow group <Group_Name> to {DB_NODE_POWER_ACTIONS} in compartment <Compartment_Name>

ステートメントの例 (構文-2)
OCI IAM policy for Oracle Base Database

権限付与後、そのユーザが特定のコンパートメント(PoC)の下に、全ての「Oracle DB System」が参照できます。それらのインスタンスに対し、DBノードの起動・停止・再起動しか実施できません。

3. Autonomous AI Database

ポリシー・ステートメント
下記2つの書き方を検証して、同じく動作できることを確認しました。差異点は、2行目です。

ADBは起動・停止専用の権限がないため、最低限の権限を付与するのに、AUTONOMOUS_DATABASE_UPDATEは必要です。

構文-1 (Where条件あり)
Allow group <Group_Name> to read autonomous-databases in compartment <Compartment_Name>
Allow group <Group_Name> to manage autonomous-databases in compartment <Compartment_Name> where request.permission='AUTONOMOUS_DATABASE_UPDATE'

構文-2 (Where条件なし)
Allow group <Group_Name> to read autonomous-databases in compartment <Compartment_Name>
Allow group <Group_Name> to {AUTONOMOUS_DATABASE_UPDATE} in compartment <Compartment_Name>

ステートメントの例 (構文-2)
OCI IAM policy for Autonomous AI Database

権限付与後、そのユーザが特定のコンパートメント(PoC)の下に、全ての「Autonomous DB」が参照できます。それらのインスタンスに対し、起動・停止・再起動を含む一部の更新操作ができますが、ADBの新規作成、削除、クーロン、リストアなどの操作ができません。

4. MySQL HeatWave

ポリシー・ステートメント
下記2つの書き方を検証して、同じく動作できることを確認しました。差異点は、2行目です。

構文-1 (Where条件あり)
Allow group <Group_Name> to read mysql-instances in compartment <Compartment_Name>
Allow group <Group_Name> to manage mysql-instances in compartment <Compartment_Name> where any {request.permission='MYSQL_INSTANCE_START', request.permission='MYSQL_INSTANCE_STOP'}

構文-2 (Where条件なし)
Allow group <Group_Name> to read mysql-instances in compartment <Compartment_Name>
Allow group <Group_Name> to {MYSQL_INSTANCE_START,MYSQL_INSTANCE_STOP} in compartment <Compartment_Name>

ステートメントの例 (構文-2)
OCI IAM policy for MySQL HeatWave

権限付与後、そのユーザが特定のコンパートメント(PoC)の下に、全てのMySQL DBインスタンスが参照できます。それらのインスタンスに対し、起動・停止・再起動しか実施できません。

サマリ
上記はオペレーターに対し、一般的な権限設定例です。OCIポリシーを利用すれば、いろいろな細かい設定ができます。よく利用場面を想定する共通ポリシーも用意されています。詳細は、こちらのドキュメントをご参照ください。

以上

ドキュメント
コア・サービスの詳細
ベース・データベース・サービスのポリシー詳細
Autonomous DatabaseのIAMポリシー
MySQL HeatWave (個々のリソース・タイプ)

タイトルとURLをコピーしました