APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【OCI】(小ネタ)コンパートメント・パスの使い方

目次

はじめに

こんにちは!クラウド事業部の中根です。

OCIのIAMポリシーで、コンパートメントを指定する方法の中に、コンパートメント・パスによる指定があることを知りました。
ドキュメント上だけだと、「相対パスなのか絶対パスなのかどっち?」、「3階層以上の時どうする?」というのがよくわからなかったので、実験して確かめました!

基本知識

IAMポリシーでは、以下のようにポリシーを適用するコンパートメントを指定します。
また、OCIDでも指定できます。

Allow group A-Admins to manage all-resources in compartment Project-A

ドキュメントには、以下のように書かれています。

デフォルトでは、ポリシー・ステートメントのコンパートメントは、ポリシーを作成するコンパートメントの直接の子とみなされます。別の親コンパートメントを指定するには、コンパートメント・パスを使用し、2つのコンパートメントの間にコロンを付けます。

ドキュメントで示されていた例

Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2

コンパートメント・パスとは、Project-A:Project-A2の部分を指しています。
この部分を読んで冒頭の疑問が浮かびましたが、調べてもそれ以上詳しい記載は見つけられず、AIの回答もなんだか信用できないので実験してみました。

コンパートメント・パスの実験

相対パスなのか絶対パスなのかどっち?

結論: ポリシーを作成したコンパートメントからの相対パス

コンパートメントを以下の構成で作成しました。
ルートコンパートメント > test_nakane > cmp-1 > cmp-1-1

test_nakaneコンパートメント上で、cmp-1-1コンパートメントに対してポリシーを作成する場合は以下の通りです。

他の指定方法が使えないか試してみました。
絶対パスで指定できないか試してみましたが、だめそうでした。
黒塗り部分はルートコンパートメント名を指定しています。

また、ポリシーを作成したコンパートメント(test_nakane)を明示的に加えてみても、エラーになりました。

直下のコンパートメントを飛ばして、もう1つ下のコンパートメントを指定してみても、エラーになりました。
下の階層の中からコンパートメント名を探しに行く、とかあるかもと思ったのですがありませんでした。

3階層以上の時はどう書く?

結論: aaa:bbb:ccc:...

コンパートメントは以下の構成です。
ルートコンパートメント > test_nakane > cmp-1 > cmp-1-1 > cmp1-1-1

test_nakaneコンパートメント上でポリシーを作成しました。
単につなげるだけで良かったです。

おわりに

コンパートメント・パスについて気になったので、いろいろと実験してみました。
ちなみにChatGPT(GPT-5.2)の回答は絶対パスで書く、とのことだったので、自分で確かめてよかったです!

参考資料

OCIドキュメント ポリシーのLocation

お知らせ

私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp