はじめに
Oracle Cloud Infrastructureの権限設定を行う際には、Identity and Access Management (IAM)でIAMポリシーを作成してどのグループにどのようなOCI上の操作権限を与えるかを定義していきます。
基本的なIAMポリシーについてはここでは詳細は説明しませんので、一般的なIAMの説明は公開資料やマニュアルなどを参照していきましょう。
通常IAMポリシーでテナンシ内の権限付与を行う際には、以下のようなポリシー構文を使っているかと思います。
Allow group <group_name> to <verb> <resource-type> in compartment <compartment_name>
Allow group <group_name> to <verb> <resource-type> in tenancy
このような通常のAllow文では自テナンシ内の権限を付与することが可能です。
クロステナンシのポリシーって何?
この記事では、自テナンシ以外の他のテナンシと連携して操作する場合に必要となる、クロステナンシ・ポリシーを試してみます。
たとえば、以下のように同じFastConnect回線をテナンシをまたがって共有して利用したいという場合、異なるテナンシ内のDRGとVCNをアタッチすることができます。このようなテナンシをまたいだ操作をする際に必要になるのがクロステナンシ・ポリシーです。
クロステナンシで実行できる操作というのは非常に限られています。特定の機能のみがクロステナンシで実施可能です。クロステナンシでの操作が可能な機能は、それらのサービスや機能の各マニュアルにその旨が記載されています。IAMポリシーの設定方法も、利用する各機能のマニュアルを参照する形になっています。
- 例)オブジェクト・ストレージのドキュメント内の「テナンシをまたがったオブジェクト・ストレージ・リソースへのアクセス」
さて、クロステナンシ・ポリシーの構文を見ていきましょう。
クロステナンシのポリシーでは、Define、Endorse、Admitという特殊なIAMステートメントを用いて、両方のテナンシ内で相互に適切なポリシー設定を行う必要があります。
- Defineは、自テナンシ以外のリソースに対して、そのポリシー内での名前を決めてあげる構文です。その後ろに続くEndorse文やAdmit文の中で指定する名前(テナンシ名およびグループ名)を必ずポリシー冒頭に定義します。ここで定義する名前は、実際のリソース名とは異なっていても構いません。
- Endorseは、自テナンシ内のグループに別テナンシの権限付与することを支持する、推薦するという意味合いです。Admitとセットになっている必要があります。
- Admitは、別テナンシからEndorseされたグループに対して自テナンシ内の操作を認めるという意味合いです。Endorseとセットになっている必要があります。
また、これらのポリシーは、rootコンパートメントに配置する必要があります。
ちょっとわかりにくいかもしれないですが、イメージ図としてはこのような形になります。
実際にクロステナンシのポリシーを作成して使ってみる
さて、前置きが長くなりましたが、Endorse, Admit, Defineの構文の意味がわかったところで実際に設定してみます。
今回は、冒頭にも例示したような、同一リージョン内の2つのテナンシ間で、DRGとVCNのアタッチを行うためのクロステナンシ・ポリシーを設定していきます。実際にクロステナンシのポリシー設定していく中で、どっちがどっちのテナンシだったけ??とわからなくなることもあるかもしれませんが、このように自分が設定したい構成図などを書いてみて整理すると良いと思います。
-
また、それぞれのテナンシでのDRGおよびVCNの操作を行うユーザグループのOCIDを確認します。
-
続いて、テナンシAにDRG、テナンシBにVCNが存在していることを確認します。
-
テナンシAで以下のポリシーを作成します。どちらもrootコンパートメント内に作成します。さきほどオブジェクト・ストレージの例で例示した形式からさらに派生して、ここでは、おたがいにendorse, admitを行うことで、両テナンシからお互いの権限付与を行うように設定しています。
-
テナンシA(DRGが存在するほうのテナンシ)のIAMポリシー
・自テナンシ内のグループがテナンシBのDRGアタッチメントを管理できるように支持する。
・テナンシBのグループが自テナンシ内のDRGを管理できるように認める。define tenancy VCN_Tenancy as <テナンシBのOCID> define group VCN_Admin as <テナンシBのグループのOCID> endorse group member-tomoko.konishi_admins to manage drg-attachment in tenancy VCN_Tenancy admit group VCN_Admin of tenancy VCN_Tenancy to manage drg in tenancy
-
テナンシA(DRGが存在するほうのテナンシ)のIAMポリシー
-
テナンシBで以下のポリシーを作成します。ポリシービルダーで「手動エディタの表示」を選ぶとまとめて記載できます。
-
テナンシB(VCNが存在するほうのテナンシ)のIAMポリシー
・テナンシAのグループが自テナンシ内のDRGアタッチメントを管理できるように認める。
・自テナンシ内のグループがテナンシAのDRGを管理できるように支持する。define tenancy DRG_Tenancy as <テナンシAのOCID> define group DRG_Admin as <テナンシAのグループのOCID> admit group DRG_Admin of tenancy DRG_Tenancy to manage drg-attachment in tenancy endorse group tkgroup1 to manage drg in tenancy DRG_Tenancy
-
テナンシB(VCNが存在するほうのテナンシ)のIAMポリシー
-
ポリシーができたので、実際にアタッチしていきます。まず、テナンシB側のVCNの画面から、テナンシAのDRGをアタッチしてみます。
ということで、無事クロステナンシでの操作ができました!