LoginSignup
4
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-07-12

初めに
セキュリティの考慮で、あるユーザ(オペレーター)に対し、オラクル・クラウド上のインスタンス(Compute/Oracle_DB/ADB/MySQL)を起動・停止するため、最低限の権限を付与したいですが、それは可能ですか?答えは、可能です。ポリシーを作れば簡単に実現できますので、実施方法を紹介したいと思います。

インスタンスの種類により少し差異がありますが、考え方は同じです。

事前準備
1. Compute (VM)
2. Oracle DB
3. Autonomous DB
4. MySQL DB

事前準備

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

インスタンス グループ名 ポリシー名 関連権限
Compute Compute_Power_Group Compute_Power_Policy INSTANCE_POWER_ACTIONS
Oracle DB DB_Node_Power_Group DB_Node_Power_Policy DB_NODE_POWER_ACTIONS
ADB ADB_Update_Group ADB_Update_Policy AUTONOMOUS_DATABASE_UPDATE
MySQL DB MySQL_Power_Group MySQL_Power_Policy MYSQL_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)
image.png

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

2. Oracle DB

ポリシー・ステートメント
下記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)
image.png

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

3. Autonomous DB

ポリシー・ステートメント
下記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)
image.png

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

4. MySQL DB

ポリシー・ステートメント
下記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)
image.png

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

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

以上

関連記事
オラクル・クラウド関連の個人ブログ


ドキュメント
コア・サービスの詳細
ベア・メタルおよび仮想マシンDBシステムのポリシー詳細
Autonomous Databaseのポリシー詳細
MySQLデータベース・サービスのポリシー詳細

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2