概要
タイトルの通りですが、OCI IAM の挙動について私が勘違いしていた点をまとめます。
-
Tenant Admin Policyについて -
manage all-resources IN TENANCYの挙動について - root ユーザーの権限について
前提
- OCI テナンシを作成すると初期状態では申請時に登録したメールアドレスでユーザーが作成されていますが、本記事ではそのユーザーのことを root ユーザーと呼びます
勘違いポイント
Tenant Admin Policy は 編集不可 (root ユーザーであっても)
Tenant Admin Policy は、OCI テナンシ払い出し時に初期状態で作成されている IAM ポリシーです。
以下のポリシーステートメントが登録されています。
ALLOW GROUP Administrators to manage all-resources IN TENANCY
こちらの IAM ポリシーを manage all-resources IN TENANCY が付与されている IAM ユーザーで編集しようとすると、以下のエラーが表示されてはじかれます。
Cannot update policy - Tenanat Admin Policy. Only Service Principal can update this policy
root ユーザーであっても同様の結果となります。
manage all-resources IN TENANCY = root権限 ではない
manage all-resources IN TENANCY は最も強い権限です。
ただし、manage all-resources IN TENANCY が付与されていても root ユーザーでないとできないことがあります。
具体的には、OCI コンソールの「請求とコスト管理」→「支払いのアップグレードと管理」ページの閲覧修正です。
実際に以下の状況で確認しました。
あえて、root ユーザーを初期状態で所属する Administrators グループから移動しています。
結果は以下の通りです。
manage all-resources IN TENANCY が付与されていたとしても、root ユーザーでなければ表示されません。
また、root ユーザーでなければ「支払方法の変更」をしようとしてもエラーとなります。
つまり、「権限が付与されている かつ root ユーザー」であれば表示編集可能となります。
権限がなければ root ユーザーは何もできない(一部除いて)
少し本題とそれますが、root ユーザーといえど権限がなければ何もできません。
(一部除いて)
実際に以下の状況で確認しました。
root ユーザーをどこのグループにも所属しないようにしています。
- 全ての操作を試したわけではないことご了承ください
結果は以下の通りです。
「支払のアップグレードと管理」の画面を表示しましたが権限エラーとなります。
こうなるとまずいですが、この状態でも一部操作はできました。
それは、グループに所属させること です。
- 全ての操作を試したわけではないことご了承ください
実際の結果は以下の通りです。
まずドメインのページに遷移すると、権限エラーでデータは表示されませんが、Default のリンクをクリックするとドメイン情報ページに遷移できます。
続いて、「ユーザー管理」タブから所属させたいグループをクリックします。
今回は Administrators グループとしますが、他のグループでも可能だと思います。
「ユーザー」→「グループへのユーザーの割り当て」をクリックします。
自分自身を選択し「追加」をクリックします。
追加操作が正常に完了しました。
割愛しますが、その後一度サインアウトしてログインしなおすと、先ほどエラーとなった操作は問題なくできることが確認できました。
整理
上記の内容を整理
- root ユーザーであってもできないことはある
- root ユーザーも権限がなければ、API 操作はできなくなる。ただし救済措置はある
-
manage all-resources IN TENANCYが付与されていても、root ユーザーでないとできないことはある
項番3に関して、支払方法の閲覧編集ができないのは大きいですが、その他請求関連の情報は閲覧できます。
もしその他請求関連を制御したい場合は、以下のようにポリシーステートメントの条件で除外すれば何とかなりそうです。
ALLOW GROUP Admin to manage all-resources IN TENANCY WHERE ANY { request.permission != 'SUBSCRIPTION_INFO_READ', request.permission != 'INVOICE_MANAGE', <条件>・・・ }
- そもそも
manage all-resources IN TENANCYを与えないのがベストですが...
おわりに
本記事では、OCI IAM の挙動について私が勘違いしていた点をまとめました。
まだほんの一部しか発見できていませんが、今後気づいたタイミングで追加していこうと思います。
🌟この記事が誰かの役に立てば幸いです!
また、ご質問やフィードバックもお待ちしています。
参考資料
リファレンス
- 動詞 - Oracle Cloud Infrastructureドキュメント
- 条件 - Oracle Cloud Infrastructureドキュメント
- 詳細サービス・ポリシー参照 - Oracle Cloud Infrastructureドキュメント
- すべてのリクエストの一般的な変数 - Oracle Cloud Infrastructureドキュメント
- セキュリティのベスト・プラクティス - Oracle Cloud Infrastructureドキュメント
- 共通ポリシー - Oracle Cloud Infrastructureドキュメント
- 請求ツールの概要 - Oracle Cloud Infrastructureドキュメント
ブログ
- Oracle Cloudテナンシの初期管理者モデルを設定します - Help Center
- Oracle Cloud Infrastructure向けの適切に設計されたフレームワーク - Help Center
- Setting up an administrator model for your Oracle Cloud tenancy - Oracle Cloud Security
- OCI IAM ポリシーによる権限管理 ~ ケース別チートシート ~ - Qiita
- Unable to add statement to 'Tenant Admin Policy' in OCI - CHRONICLER.TECH











