OCI IAM設計におけるTag活用:グループ制御との比較検証

目次

はじめに

OCIでアクセス制御を設計する際、「グループのみで十分ではないか」という疑問が生じることがあります。
本記事では、Computeインスタンスを対象に、 グループベースの制御とTag条件付きポリシーによる制御の違いを検証します。
IAMにおいてグループのみを利用する場合、制御範囲はコンパートメント単位に限定されます。
一方で、Tagを活用することで、同一コンパートメント内でも特定のリソースのみを制御可能になります。

Tagとは

OCIのTagは、リソースに付与する属性ラベルです。
リソースを分類・整理するだけでなく、IAMポリシーの条件やログ分析、コスト分析など設計・運用の基盤としても活用できます。

OCIのTagにはDefined TagとFree-form Tagの2種類があります。
本記事では、IAMポリシーの条件として利用可能なDefined Tagを使用して検証を行います。

詳細・タグ付可能なリソース一覧は公式ドキュメントを参照してください。
参考:タグ付けの概要

前提条件

本検証を実施するため、以下のリソースを事前に準備します。
1. OCIユーザーが所属するグループ
2. コンパートメント
3. インスタンスを配置するVCNおよびサブネット
4. 検証対象となるComputeインスタンス

設定方法

※本記事に記載の値はサンプルです。実際の環境に合わせて各パラメータを設定してください。

Tagの作成

OCIコンソール上で「ガバナンスと管理」→「タグ・ネームスペース」へ移動します。

タグ・ネームスペースを作成するコンパートメントを選択します。

「タグ・ネームスペースの作成」をクリックします。

以下の項目に、それぞれ必要な値を入力して「作成」をクリックします。

  • コンパートメントに作成:ネームスペースを作成するコンパートメントを選択します
  • ネームスペース定義名:任意の名前を入力します
  • 説明:ネームスペースの説明を入力します

作成したタグ・ネームスペースをクリックします。

詳細画面で「タグ・キー定義の作成」をクリックします。

以下の項目に、それぞれ必要な値を入力して「作成」をクリックします。

  • タグ・キー:任意のタグキー名を入力します
  • 説明:タグ・キーの説明を入力します
  • タグ値のタイプ:本記事では「値のリスト」を選択して、2つの任意の値を入力します

Computeインスタンスにタグ付け

前項で作成したタグを用いて、検証用のComputeインスタンスにタグを付与します。
本検証では、同一コンパートメント内に「Dev」と「Prod」の2種類のタグを設定し、制御の違いを確認します。

Computeインスタンスへのタグ付けは、以下の2通りの方法があります。
1. インスタンス作成時にタグを設定する方法

  1. 作成済みインスタンスの詳細画面からタグを追加する方法

検証

グループのみの制御

OCIコンソール上で「アイデンティティとセキュリティ」→「ポリシー」へ移動します。

コンパートメントを選択し、「ポリシーの作成」をクリックします。

以下の項目に、それぞれ必要な値を入力して「作成」をクリックします。

  • 名前:任意のポリシー名を入力します
  • 説明:ポリシーの説明を入力します
  • ポリシー・ビルダー:Allow group <グループ名> to manage instance-family in compartment <コンパートメント名>

設定したグループのユーザーで該当コンパートメント内のインスタンス停止・起動を実行すると、
同一コンパートメント内ではタグによる区別は行われません。
そのため、「Dev」タグが付与されたインスタンスと「Prod」タグが付与されたインスタンスの両方を管理できる状態となります。

Tag条件付き制御

OCIコンソール上で「アイデンティティとセキュリティ」→「ポリシー」へ移動します。

コンパートメントを選択し、前項で作成したポリシーをクリックします。

「ステートメント」→「ポリシー・ステートメントの編集」をクリックします。

以下のポリシーを追加します。

  • where target.resource.tag.<タグ・ネームスペース>.<タグ・キー> = ‘<タグ値>‘

設定したグループのユーザーで該当コンパートメント内のインスタンス停止・起動を実行します。
「Dev」タグが付与されたインスタンスは操作可能ですが、「Prod」タグが付与されたインスタンスは操作できないことを確認できます。

「Prod」タグが付与されたインスタンスの詳細画面に移動してみると、権限がないことを確認できます。

まとめ

本記事では、Computeインスタンスを対象に、グループベース制御とTag条件付きポリシー制御の違いを検証しました。

グループのみで制御する場合、アクセス範囲はコンパートメント単位に限定されます。
一方で、Tag条件を追加することで、同一コンパートメント内であっても特定の属性を持つリソースのみを制御対象とすることが可能になります。
1つのコンパートメント内で細かな運用権限制御が必要な場合、Tagベースのアクセス制御は有効な手段となります。

重要なのは、Tagは既存の権限を「制限」する仕組みではなく、条件付きで許可を設計するための仕組みであるという点です。
OCIではAllowポリシーが累積的に評価されるため、広範囲な権限が別途存在する場合は、Tag条件が意図通りに機能しない可能性があります。
そのため、ポリシー設計時には既存権限との整合性を十分に確認することが重要です。

より詳細なTagベースアクセス制御の活用方法については、以下の公式ドキュメントも併せて参照してください。
参考:タグを使用したアクセスの管理

OCIのTag機能を活用することで、より柔軟なアクセス制御を実現してみてください。

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃OCIのサポート業務に従事している有資格者で構成された技術サポートチームがOCIに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次