フォーム読み込み中
ソフトバンクの武田です。
OCI(Oracle Cloud Infrastructure)IAMの新機能「Denyポリシー」を有効化し、挙動を確認しました。本記事ではAllowとの優先関係、落とし穴になりそうなポイント、タグを使ったABACでの動作をまとめます。
これまではAllow(許可)を使ってリソースに対するアクセスを管理してきましたが、これに加えてDeny(拒否)が2025年11月にリリースされました。これによって権限のブロックを明確に指定できるようになり、きめ細かな制御が可能になります。
テナンシで拒否ポリシーを有効化する設定が必要です。
※一度ONにするとOFFには戻せません。まずは検証用テナンシで確認するのがおすすめです。
アイデンティティとセキュリティ > ポリシー の アクション > ポリシー設定 に進みます。
IAM拒否ポリシーの有効化スイッチをONにします。
一度ONにしたら、OFFに戻すことはできませんでした。
確認画面が出たら[有効化]を押します。
IAMDenyPolicyが自動で作成されます。これで有効化が完了します。
このような検証環境を準備し、動きを確認しました。
実際にポリシーを作ってみました。
今回はインスタンスを1個作成・起動してから、以下のポリシーを作成して動きを確認しました。
Allow group 'test-domain'/'testgroup' to manage all-resources in compartment test-cpt
Deny group 'test-domain'/'testgroup' to manage instances in compartment test-cpt
結果はこのようになりました。
Allowでall-resourcesをmanageしていても、instancesに対するDenyを追加すると新規インスタンスの作成は失敗しました。
| 新規インスタンスの作成 | APIエラーで失敗 Authorization failed or requested resource not found. |
|---|---|
| 既存インスタンスの停止 | 成功 |
一方で、同じ条件でも既存インスタンスの停止は成功しました。
manageをDenyしているのに、なぜ操作できてしまうのでしょうか。
疑問に思いましたが、これはOCIドキュメントの「メタバーブ反転」で説明されており、Allow文とは包含関係が逆転します。
つまりmanageをDenyしてもinspect/read/useは制御対象にならないため
| 操作 | 権限 | 動詞 | Denyの対象 |
|---|---|---|---|
| 新規インスタンスの作成 | INSTANCE_CREATE | manage | 対象 |
| 既存インスタンスの停止 | INSTANCE_UPDATE | USE | 対象外 |
となったようです。
これを受けて先ほどのDeny文を to manage から to inspect に変えたところ、インスタンスに対する操作が一切できなくなりました。
このあたりは少し癖があるので、注意が必要です。
OCIではタグを使ったABAC(Attribute Based Access Control、属性ベースアクセス制御)がサポートされています。リソース・タグでABACを設定した状態でDeny文が機能するか試してみました。
ガバナンスと管理 > タグ・ネームスペース で制御用のタグを準備します。
今回は test-tag-ns/test-key/deny-test を作成しました。
権限操作用ポリシーを作成します。
Allow group 'test-domain'/'testgroup' to manage all-resources in compartment test-cpt where target.resource.tag.test-tag-ns.test-key='deny-test'
Deny group 'test-domain'/'testgroup' to inspect instances in compartment test-cpt where target.resource.tag.test-tag-ns.test-key='deny-test'
このタグをテスト用インスタンスに付与して操作を試したところ、インスタンスを選択した時点でエラーになりました。inspectをDenyしている効果が出ているようです。
このように、リソース・タグを使用したABACにもDeny文は利用できました。
ただし「拒否ポリシーの既知の問題」に制約事項が記載されていますので、ユーザー、グループ、また動的グループを対象にしたい場合は注意してください。
今回はDeny文がどのように動作するかを確認できました。
これによって制御の幅が格段に広がり、管理担当者の苦労が軽減されそうです。
一方、メタバーブ反転など注意点もあるため、ドキュメントを参照しつつ使いこなしていきたいと思います。
この記事がOCIでポリシーを管理する方の参考になれば幸いです。
条件に該当するページがございません