3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud InfrastructureAdvent Calendar 2023

Day 5

OCIのクロステナンシ・ポリシーを設定してみる

Last updated at Posted at 2023-12-04

はじめに

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をアタッチすることができます。このようなテナンシをまたいだ操作をする際に必要になるのがクロステナンシ・ポリシーです。

image-20231204145507665.png

クロステナンシで実行できる操作というのは非常に限られています。特定の機能のみがクロステナンシで実施可能です。クロステナンシでの操作が可能な機能は、それらのサービスや機能の各マニュアルにその旨が記載されています。IAMポリシーの設定方法も、利用する各機能のマニュアルを参照する形になっています。

さて、クロステナンシ・ポリシーの構文を見ていきましょう。

クロステナンシのポリシーでは、Define、Endorse、Admitという特殊なIAMステートメントを用いて、両方のテナンシ内で相互に適切なポリシー設定を行う必要があります。

  • Defineは、自テナンシ以外のリソースに対して、そのポリシー内での名前を決めてあげる構文です。その後ろに続くEndorse文やAdmit文の中で指定する名前(テナンシ名およびグループ名)を必ずポリシー冒頭に定義します。ここで定義する名前は、実際のリソース名とは異なっていても構いません
  • Endorseは、自テナンシ内のグループに別テナンシの権限付与することを支持する、推薦するという意味合いです。Admitとセットになっている必要があります。
  • Admitは、別テナンシからEndorseされたグループに対して自テナンシ内の操作を認めるという意味合いです。Endorseとセットになっている必要があります。

また、これらのポリシーは、rootコンパートメントに配置する必要があります。

ちょっとわかりにくいかもしれないですが、イメージ図としてはこのような形になります。

image-20231204145634168.png

image-20231204145643144.png

実際にクロステナンシのポリシーを作成して使ってみる

さて、前置きが長くなりましたが、Endorse, Admit, Defineの構文の意味がわかったところで実際に設定してみます。

今回は、冒頭にも例示したような、同一リージョン内の2つのテナンシ間で、DRGとVCNのアタッチを行うためのクロステナンシ・ポリシーを設定していきます。実際にクロステナンシのポリシー設定していく中で、どっちがどっちのテナンシだったけ??とわからなくなることもあるかもしれませんが、このように自分が設定したい構成図などを書いてみて整理すると良いと思います。

image-20231204151236890.png

  1. まず、両テナンシのOCIDを確認します。テナンシの詳細ページを開いて、OCIDをコピーしておきます。
    image-20231204152743383-17016712844321.png

  2. また、それぞれのテナンシでのDRGおよびVCNの操作を行うユーザグループのOCIDを確認します。

    • アイデンティティ・ドメインなしのIAMの場合はこちらの画面で確認します。
      image-20231204153945572.png

    • アイデンティティ・ドメインありのIAMの場合はこちらの画面で確認します。
      image-20231204153826387.png

  3. 続いて、テナンシAにDRG、テナンシBにVCNが存在していることを確認します。

    • テナンシA内のDRG
      image-20231204153213827.png
    • テナンシB内のVCN
      image-20231204153013728.png
  4. テナンシ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 
      

    image-20231204155318414.png

  5. テナンシ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
      

    image-20231204155101504.png

  6. ポリシーができたので、実際にアタッチしていきます。まず、テナンシB側のVCNの画面から、テナンシAのDRGをアタッチしてみます。

    1. VCNの詳細画面→リソース→動的ルーティング・ゲートウェイのアタッチメント→「DRGアタッチメントの作成」をクリックimage-20231204155525255.png

    2. DRGの場所で「別のテナンシ」を選択し、DRGのOCIDを手動入力し、「DRGアタッチメントの作成」をクリック
      image-20231204155952444.png

    3. 少し待つとステータスが「アタッチ中」から、
      image-20231204160107305.png

      「アタッチ済」になったので、成功です!
      image-20231204160121009.png

    4. それでは、テナンシAのDRG側の画面からも見てみましょう。DRG詳細ページの「クロステナンシ・アタッチメント」からも、同じクロステナンシのアタッチメントが表示されていることが分かります。
      image-20231204165652327.png

ということで、無事クロステナンシでの操作ができました!

おまけ

  • Define文はendorseやadmitより前に必要。順番を逆にすると "DEFINE statement must be at the beginning"というエラーになる。

    image-20231204161830398.png

  • クロステナンシのポリシーをrootコンパートメント以外に置こうとすると "ENDORSE policies may only be written in the root compartment" といったエラーになる。
    image-20231204164415519.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?