
目次
はじめに
こんにちは!クラウド事業部の中根です。
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)の回答は絶対パスで書く、とのことだったので、自分で確かめてよかったです!
参考資料
お知らせ
私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。