タグを使用したアクセスの管理
このトピックでは、ポリシーでタグを使用して、リクエスタまたは認可コールのターゲットに適用されるタグに基づいてアクセスのスコープを設定する方法について説明します。
タグベース・アクセス制御について
条件およびタグ変数のセットを使用して、リソースに適用されているタグに基づいてアクセスのスコープを設定するポリシーを作成できます。アクセスは、リクエストしているリソース(グループ、動的グループまたはコンパートメント)またはリクエストのターゲット(リソースまたはコンパートメント)に存在するタグに基づいて制御できます。タグベース・アクセス制御では、コンパートメント、グループおよびリソースにまたがるタグを使用してアクセス・ポリシーを定義できるため、ポリシーに対する柔軟性が向上します。
組織で、タグを使用してアクセスを管理するポリシーを作成する場合は、タグを適用できるユーザーを制御する適切なコントロールが用意されていることを確認してください。また、ポリシーの適用後に、グループ、ユーザーまたはリソースにタグを適用すると、リソースにアクセス権が付与される可能性があることにも注意してください。
ターゲットまたはリクエスタのいずれかにタグを指定するポリシーを作成する前に、次の点に注意してください:
- タグを搬送するすべての潜在的なリクエスタ(ユーザー、グループ、動的グループ)
- タグを搬送するすべてのリソース
リソースにタグを適用する前に、タグを含み、リソースへのアクセス権を持つユーザーに影響を与える可能性がある配置済のポリシーを認識してください。
リクエストしているリソースに適用されるタグを使用したアクセスの管理
次のものに適用されるタグの値に基づいてアクセスを制御できます:
- アクセスをリクエストする(ユーザーの)グループ
- アクセスをリクエストする(インスタンスの)動的グループ
- 動的グループ内のリソースが常駐するコンパートメント
ポリシー・ステートメントのタグを使用してアクセスのスコープを設定することで、1つのポリシー・ステートメントで複数のグループのアクセスを定義できます。また、元のポリシーを変更せずに、タグを適用または削除することによって、グループのアクセス権を付与したり、アクセス権を取り消すこともできます。
次の表に、各変数の基本構文を示します。構文はグループと動的グループで同じですが、それぞれ異なる行に表示されることに注意してください。その他の使用例は、サポートされている演算子を参照してください。
リクエスタに適用されるタグ | 変数構文 | 説明 |
---|---|---|
グループ |
request.principal.group.tag.{tagNamespace}.{tagKeyDefinition}= '<value>'
ユーザー・グループのサンプル・ポリシー:
Operations.Project='Prod'でタグ付けされたグループに属するユーザーは、HRコンパートメント内のインスタンスを管理できます。 |
ユーザーが属するグループに適用されるタグが一致するかどうかが評価されます。 |
動的グループ |
request.principal.group.tag.{tagNamespace}.{tagKeyDefinition}= '<value>'
動的グループのサンプル・ポリシー:
動的グループInstancesAのメンバーであり、Operations.Project='Prod'でタグ付けされた動的グループのメンバーでもあるインスタンスは、コンパートメントHRのインスタンスを管理できます。 |
インスタンスが属する動的グループに適用されるタグが一致するかどうかが評価されます。 |
コンパートメント |
request.principal.compartment.tag.{tagNamespace}.{tagKeyDefinition}= '<value>'
サンプル・ポリシー:
動的グループInstancesAのメンバーであり、Operations.Project='Prod'でタグ付けされたコンパートメント内にも常駐するインスタンスは、テナンシ内のインスタンスを管理できます。 |
リクエストしているリソースが属するコンパートメントに適用されるタグが評価されます。 |
ユーザーはテナンシのルート・コンパートメントに存在するため、これらのポリシー・ステートメントが機能するためにはタグがルート・コンパートメントに適用される必要があります。
ターゲット・リソースに適用されるタグを使用したアクセスの管理
次のものに適用されるタグの値に基づいてアクセスを制御できます:
- リソース
- ターゲット・リソースが常駐するコンパートメント
次の表に、これらの変数の基本構文を示します。使用例は、サポートされている演算子を参照してください。
ターゲットに適用されるタグ | 変数構文 | 説明 |
---|---|---|
リソース |
target.resource.tag.{tagNamespace}.{tagKeyDefinition}='<value>'
サンプル・ポリシー:
|
リクエストのターゲット・リソースに適用されるタグが評価されます。 このタイプのポリシーで付与できる権限には制限があります。詳細は、このトピックの次の各項を参照してください。 |
コンパートメント |
target.resource.compartment.tag.{tagNamespace}.{tagKeyDefinition}='<value>'
サンプル・ポリシー:
|
リクエストのターゲット・コンパートメントに適用されるタグが評価されます。 ネストされたコンパートメントでアクセス権が付与される方法の詳細は、コンパートメント階層を参照してください。 |
リソースをリストする権限は個別に付与する必要がある
ターゲット・リソースに適用されるタグに基づいてアクセスのスコープを設定するポリシーでは、リソースのリストを返せるようにする権限は許可できません。したがって、リソースのリスト表示を許可する権限は、追加のポリシー・ステートメントを通じて付与する必要があります。つまり、次のようなポリシーを定義した場合です:
allow group GroupA to manage all-resources in compartment Operations where target.resource.tag.Operations.Project= 'Prod'
GroupAでは、その他の方法で管理できるリソースをリストできません。GroupAのメンバーは、コンソールを使用してこれらのリソースを操作することはできず、ユーザーは管理しようとしているリソースのOCIDを知る必要があります。これにより、厄介なSDKおよびCLIを使用することにもなります。
GroupAがこれらのリソースをリストできるようにするには、次のような別のポリシー・ステートメントを追加する必要があります:
allow group GroupA to inspect all-resources in compartment Operations
この方法では、(管理対象のリソースの表示を許可することで)ユーザーがコンソールをより簡単に使用できるため、タグベースのポリシーが向上しますが、依然として権限は検査のみに制限されます。GroupAのメンバーは、適切にタグ付けされていないかぎり、これらのリソースに対してアクションを実行できません。タグベース・アクセス制御を使用する際は、追加された柔軟性によって、アクセスの拡大が必要になる可能性があることに注意してください。
この制限を回避するために使用できるもう1つの方法は、権限を付与するリソースを含むコンパートメントをタグ付けすることです。ポリシーの例は、次のようになります:
allow group GroupA to manage all-resources in tenancy where target.resource.compartment.tag.Operations.Project= 'Prod'
このポリシーによって、GroupAのメンバーは、Operations.Project='Prod'タグでタグ付けされたコンパートメントにあるテナンシ内のすべてのリソースを管理できます。
ターゲット・リソースにタグを必要とするポリシーは作成権限を付与できない
リソースのタグの値に基づいてアクセスのスコープを設定するポリシーを作成する場合は、ポリシーで作成権限を付与できないことに注意してください。インスタンスを作成するリクエストは、ターゲット・リソースがまだ作成されておらず、したがって評価対象の適切なタグがないため、失敗します。そのため、次のようなポリシーでは:
allow group GroupA to manage instances in compartment Operations where target.resource.tag.Operations.Project='Prod'
GroupAのメンバーが、Operations.Project='Prod'でタグ付けされたインスタンスを使用および削除できますが、インスタンスの作成はできません。
サポートされている操作
これらのタグ変数を使用するポリシーには、次の演算子や一致タイプを含めることができます:
演算子 | タイプ | 例 | 説明 |
---|---|---|---|
= | 文字列 | request.principal.group.tag.MyTagNamespace.MyTag='sample'
|
リクエスタが属するグループのいずれかが、MyTagNamespace .MyTagの照合値"sample"でタグ付けされている場合に、trueと評価されます。(値では大文字と小文字が区別されません。) |
パターン | request.principal.group.tag.MyTagNamespace.MyTag=/*sample/
|
MyTagNamespace.MyTagのいずれかの値が"sample"で終わる場合に、trueと評価されます。(単純で大/小文字が区別されないパターン一致。) | |
ポリシー変数 | request.principal.group.tag.mytagnamespace.mytag = target.resource.tag.mytagnamespace.mytag |
指定されたリソースmytagnamespace.mytagに、指定されたターゲットmytagnamespace.tagに一致する値がある場合に、trueと評価されます。 | |
!= | 文字列 | request.principal.group.tag.MyTagNamespace.MyTag !='sample'
|
ポリシー変数の文字列値のいずれも"sample"と等しくない場合に、trueと評価されます。(単純で大/小文字を区別しない文字列の比較です。) |
パターン | request.principal.group.tag.MyTagNamespace.MyTag !=/*sample/
|
MyTagNamespace.MyTagのいずれの値も"sample"で終了していない場合に、trueと評価されます。(単純で大/小文字が区別されないパターン一致。) | |
ポリシー変数 | request.principal.group.tag.mytagnamespace.mytag != target.resource.tag.mytagnamespace.mytag |
どちらの側も他方のサブセットでない場合に、trueと評価されます。 |
In / Not In
演算子 | タイプ | 例 | 説明 |
---|---|---|---|
in | 文字列 | request.principal.group.tag.MyTagNamespace.MyTag in ('sample', 'sample1')
|
現在のリクエスト元プリンシパルのいずれかのグループのMyTagNamespace.MyTag値が"sample"または"sample1"と等しい場合、この句はtrueと評価されます。 |
パターン | request.principal.group.tag.MyTagNamespace.MyTag in (/*sample/, /sample1*/)
|
現在のリクエスト元プリンシパルのいずれかのグループのMyTagNamespace.MyTag値が"sample"で終わるか"sample1"で始まる場合、この句はtrueと評価されます。 | |
ポリシー変数 | request.principal.group.tag.MyTagNamespace.MyTag in (target.resource.tag.mytagnamespace.mytag, 'sample') |
次のいずれかの条件が満たされた場合、この句はtrueと評価されます: 1request.principal.group.tag.MyTagNamespace.MyTagまたはtarget.resource.tag.mytagnamespace.mytagは、もう一方のサブセットです。 2. request.principal.group.tag.MyTagNamespace.MyTagのいずれかの文字列値が"sample"と等しい。 |
|
not in | 文字列 | request.principal.group.tag.MyTagNamespace.MyTag not in ('sample', 'sample1')
|
現在のリクエスト元プリンシパルのいずれかのグループのどのMyTagNamespace.MyTag値も"sample"または"sample1"と等しくない場合、この句はtrueと評価されます。 |
パターン | request.principal.group.tag.MyTagNamespace.MyTag not in (/*sample/, /sample1*/)
|
現在のリクエスト元プリンシパルのいずれのグループにも"sample"で終わるか"sample1"で始まるMyTagNamespace.MyTag値がない場合、この句はtrueと評価されます。 | |
ポリシー変数 | request.principal.group.tag.MyTagNamespace.MyTag not in (target.resource.tag.mytagnamespace.mytag, 'sample')
|
次のすべての条件が満たされた場合、この句はtrueと評価されます: 1. request.principal.group.tag.MyTagNamespace.MyTagまたはarget.resource.tag.mytagnamespace.myタグはどちらも他のタグのサブセットではない。 2. request.principal.group.tag.MyTagNamespace.MyTagのいずれの文字列値も"sample"と等しくない。 |
ワイルドカードのサポート
*文字を使用すると、値に関係なく{tagNamespace}.{tagKeyDefinition}のすべてのオカレンスに一致します。ポリシーでは、*を一重引用符'*'またはバックスラッシュ/*/で囲むことができます。たとえば、
allow group GroupA to use all-resources in compartment HR where target.resource.tag.HR.Project= '*'
この例では、GroupAで、タグ・ネームスペースおよびタグ・キー: HR.Projectと任意の値でタグ付けされたコンパートメントHR内のすべてのリソースを使用できます。
タグ・ネームスペース内の文字およびポリシー変数で使用されているタグ・キー定義の制限
タグ・ネームスペースおよびタグ・キー定義では、ポリシー変数で許可されるよりも幅広い文字セットがサポートされています。したがって、タグ・ネームスペースおよびタグ・キー定義を変数で使用する場合は、ポリシー変数でもサポートされている文字のみが含まれるようにしてください。サポートされる文字は次のとおりです:
a - z、A - Z、0 -9、_、@、-、:
タグ・ネームスペースまたはタグ・キーにこれら以外の文字が含まれる場合、ポリシー変数では使用できません。タグ・ネームスペースおよびタグ・キーの名前は変更できないため、新しいタグ・ネームスペースおよびタグ・キー定義を作成する必要があります。
大/小文字の区別に関する考慮事項
ポリシーでタグを扱う場合、タグ値の大文字と小文字は区別されないことに注意してください。例:
request.principal.group.tag.MyTagNamespace.MyTag='sample'
は次と同じです
request.principal.group.tag.MyTagNamespace.MyTag='Sample'
コンパートメント階層
ターゲット・コンパートメントに適用されたタグに基づいてアクセスを許可する条件を記述する場合、このポリシーでは、タグ付けされたコンパートメント内にネストされているすべてのコンパートメントへのアクセスも許可されることに注意してください。タグ付けされたコンパートメント内のすべてのサブコンパートメントは、タグ付けされたコンパートメント内のリソースであるため、ポリシーによりアクセス権が付与されます。
たとえば、このシナリオでは次のようになります。
ポリシー:
allow group GroupA to use all-resources in tenancy where target.resource.compartment.Operations.Project='ProjectA'
タグがCompartmentAにのみ適用されている場合でも、GroupAではCompartmentA、CompartmentA1およびCompartmentA1.1のすべてのリソースを使用できます。
サポートされているサービス
すべてのOracle Cloud Infrastructureサービスでは、request.principal.compartment
、request.principal.group
およびtarget.resource.compartment.tag
の各ポリシー変数がサポートされます。
一部のサービスでは、target.resource.tag
ポリシー変数がサポートされていません。次の表に、サポートされているサービスをリストします。サービスが表に示されていない場合、そのサービスは現時点でサポートされていません。
いくつかのサービスには制限があります。表内の該当するリンクを参照してください。
サポートされるサービス | 詳細情報 |
---|---|
APIゲートウェイ | APIゲートウェイ・サービスの制限事項を参照してください。 |
ビッグ・データ・サービス | ビッグ・データ・サービスの制限事項を参照してください。 |
Blockchain Platform | 完全にサポートされており、制限はありません。 |
ブロック・ボリューム | ブロック・ボリューム・サービスの制限事項を参照してください。 |
証明書 | 完全にサポートされており、制限はありません。 |
Compute | コンピュート・サービスの制限事項を参照してください。 |
コンピュート管理 | コンピュート管理の制限事項を参照してください。 |
コンテンツ管理 | コンテンツ管理の制限事項を参照してください。 |
Data Catalog | データ・カタログ・サービスの制限事項を参照してください。 |
データ・フロー | 完全にサポートされており、制限はありません。 |
データ・サイエンス | データ・サイエンス・サービスの制限事項を参照してください。 |
Database | データベース・サービスの制限事項を参照してください。 |
Digital Assistant | デジタル・アシスタントの制限事項を参照してください。 |
DNS | パブリックDNSの制限事項を参照してください。 |
電子メール配信 | 完全にサポートされており、制限はありません。 |
FastConnect | 完全にサポートされており、制限はありません。 |
関数 | 完全にサポートされており、制限はありません。 |
ヘルス・チェック | 完全にサポートされており、制限はありません。 |
IAM | サポートされているリソース: users 、groups 、policies 、dynamic-groups 、network-sources およびidentity-providers |
ロード・バランサ | ロード・バランシング・サービスの制限事項を参照してください。 |
HeatWave | 完全にサポートされており、制限はありません。 |
ネットワーク | ネットワーキング・サービスの制限事項を参照してください。 |
NoSQL Database Cloud | ネットワーキング・サービスの制限事項を参照してください。 |
通知 | 完全にサポートされており、制限はありません。 |
オブジェクト・ストレージ | オブジェクト・ストレージ・サービスの制限事項を参照してください。 |
割当て制限サービス | 完全にサポートされており、制限はありません。 |
タグ・ネームスペース | タグ・ネームスペースの制限事項を参照してください。 |
Vault | 暗号化はサポートされていません。 |
WAF | WAFの制限事項 を参照してください。 |
特定のTarget.Resource.Tagシナリオでの制限事項と必要な追加ポリシー
一部のサービスでは、すべての権限またはリソース・タイプがサポートされているわけではありません。権限がサポートされていない場合は、リソースがタグ付けされていて、権限がアクセス権を付与する動詞に含まれていても、その権限は許可されず、権限によって制御される操作に対する認可が失敗することを意味します。たとえば、ブロック・ボリューム・サービス・リソースvolume-backups
では、VOLUME_BACKUP_COPY権限のタグベース・アクセス制御はサポートされません。したがって、このポリシーは:
allow group TestGroup to manage volume-backups in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
TestGroupグループのメンバーに、CopyVolumeBackup
操作の実行を許可しません。TestGroupにこの権限を付与するには、他のポリシー・ステートメントを追加してカバーする必要があります。
また、運用シナリオによっては、複数のリソースにアクセスするための認可が必要になる場合もあります。ターゲット・リソースに適用されるタグへのアクセスのスコープを設定する場合は、操作に含まれるリソースごとに別個のポリシーを含める必要があります。また、リソースおよびその他のサービス固有の権限のリストに対する制限により、追加のポリシー(タグでスコープが設定されない)が必要となります。
APIゲートウェイ・サービスの制限事項
APIゲートウェイのリソースに必要なタグベースのアクセス制御ポリシーに加え、api-workrequests
の管理権限を許可するポリシーが必要になります。
追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage api-workrequests in compartment Compartment1
ビッグ・データ・サービスの制限事項
ビッグ・データ・サービス・リソースに必要なタグベースのアクセス制御ポリシーに加えて、cluster-work-requests
の管理権限を許可するポリシーが必要になります。
追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage cluster-work-requests in compartment Compartment1
ブロック・ボリューム・サービスの制限事項
サービス | 制限があるリソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 |
---|---|---|
ブロック・ボリューム | backup-policy-assignments
|
BACKUP_POLICY_ASSIGNMENT_DELETE |
volume-backups
|
VOLUME_BACKUP_COPY |
追加のポリシーが必要なシナリオ:
コンピュート・インスタンスへのブロック・ボリュームのアタッチ:
ブロック・ボリュームをコンピュート・インスタンスにアタッチするには、ボリュームとインスタンスに対してuse
動詞を許可するタグベース・アクセス制御ポリシーに加えて、いくつかの追加の権限が必要です。
例:
allow group TestGroup to use volumes in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
allow group TestGroup to use instances in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
この2つのポリシーにより、リソースに適切なタグがある場合に、TestGroupのメンバーはCompartment1内のボリュームおよびインスタンスを使用できます。メンバーがブロック・ボリュームをインスタンスにアタッチできるようにするには、次のステートメントに示されている権限を許可するポリシーも必要です:
allow group TestGroup to read instances in compartment Compartment1
allow group TestGroup to manage volume-attachments in compartment Compartment1 where any {request.permission='VOLUME_ATTACHMENT_CREATE', request.permission='VOLUME_ATTACHMENT_DELETE'}
コンピュート・サービスの制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 |
---|---|---|
Compute | instance-console-connection
|
INSTANCE_CONSOLE_CONNECTION_DELETE |
instances
|
INSTANCE_POWER_ACTIONS |
追加のポリシーが必要なシナリオ:
サブネットへのコンピュート・インスタンスのアタッチ:
コンピュート・インスタンスのサブネット・アタッチメントを管理するには、instances
およびsubnets
に必要なタグベース・アクセス制御ポリシーに加えて、次に示します:
allow group TestGroup to use subnets in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
allow group TestGroup to manage instances in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
vnics
に対する追加の権限が必要になります:
allow group TestGroup to use vnics in compartment Compartment1 where ANY{request.permission='VNIC_ATTACH', request.permission='VNIC_CREATE'}
コンピュート・インスタンスからのVNICの削除:
コンピュート・インスタンスからVNICを削除するには、instances
およびsubnets
に必要なタグベース・アクセス制御ポリシーに加えて、次に示します:
allow group TestGroup to manage instances in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
allow group TestGroup to use subnets in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
vnics
に対する権限を許可するポリシーが必要になります:
allow group TestGroup to use vnics in compartment Compartment1 where ANY {request.permission='VNIC_DELETE', request.permission='VNIC_DETACH'}
コンピュート管理の制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 | ノート |
---|---|---|---|
コンピュート管理 | instance-pools
|
すべての権限 | instance-pools リソース・タイプはサポートされていません。 |
auto-scaling-configurations
|
AUTO_SCALING_CONFIGURATION_UPDATE | . |
コンテンツ管理の制限
コンテンツ管理リソースに必要なタグベースのアクセス制御ポリシーに加えて、oce-work-requests
の管理権限を許可するポリシーが必要になります。
追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage oce-requests in compartment Compartment1
データベース・サービスの制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 |
---|---|---|
Database | all
|
DATABASE_DELETE |
ExaDataインフラストラクチャのタグの更新:
タグベース・アクセス制御ポリシーの使用は、現時点ではサポートされていません。
追加のポリシーが必要なシナリオ:
DBシステムの削除:
DBシステムを削除または更新するには、db-systems
に必要なタグベース・アクセス制御ポリシーに加えて、次に示します:
allow group TestGroup to manage db-systems in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
db-backups、db-homes、vnics
、subnets
およびdatabases
に対して権限を付与するポリシーが必要になります。次のポリシー例は追加の権限を示しています:
allow group TestGroup to manage db-backups in compartment Compartment1 where ANY {request.permission='DB_BACKUP_DELETE', request.permission='DB_BACKUP_INSPECT'}
allow group TestGroup to manage db-homes in compartment Compartment1 where request.permission='DB_HOME_DELETE'
allow group TestGroup to manage vnics in compartment Compartment1 where ANY {request.permission='VNIC_DELETE', request.permission='VNIC_DETACH'}
allow group TestGroup to manage subnets in compartment Compartment1 where request.permission='SUBNET_DETACH'
allow group TestGroup to manage databases in compartment compartment1
別のコンパートメントへのDBシステムの移動:
DBシステムを別のコンパートメントに移動するには、db-systems
に必要なタグベース・アクセス制御ポリシーに加えて、次に示します:
allow group TestGroup to manage db-systems in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
databases
、db-homes
およびdb-backups
に対して権限を付与するポリシーが必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to use databases in compartment Compartment1 where request.permission='DATABASE_UPDATE'
allow group TestGroup to manage db-backups in compartment Compartment1 where request.permission='DB_BACKUP_INSPECT'
allow group TestGroup to manage db-homes in compartment Compartment1 where request.permission='DB_HOME_UPDATE'
Exadata DBシステムのデータベース削除:
Exadata DBシステムのデータベース・リソースを削除するには、次に示すdb-systems
およびdatabases
に必要なタグベース・アクセス制御ポリシーが必要になります:
allow group TestGroup to manage db-systems in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
allow group TestGroup to manage databases in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
db-homes
およびdb-backups
に対する権限も必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage db-homes in compartment Compartment1 where request.permision='DB_HOME_UPDATE'
allow group TestGroup to manage db-backups in compartment Compartment1 where ANY {request.permission='DB_BACKUP_DELETE', request.permission='DB_BACKUP_INSPECT'}
データベースの削除:
ターゲット・リソースでタグベース・ポリシーを使用してベアメタルまたは仮想マシンDBシステムのデータベースを削除することは、サポートされていません。
データベース・バックアップの作成:
データベース・バックアップを作成するには、databases
のタグベース・アクセス制御ポリシーが必要になります:
allow group TestGroup to manage databases in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
db-backups
に対する権限も必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage db-backups in compartment Compartment1 where request.permission='DB_BACKUP_CREATE'
データベースのリストア:
データベース・バックアップをリストアするには、databases
のタグベース・アクセス制御ポリシーが必要になります:
allow group TestGroup to manage databases in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
次に示すようなbackups
に対する権限も必要になります:
allow group TestGroup to manage db-backups in compartment Compartment1 where ANY {request.permission='DB_BACKUP_INSPECT', request.permission='DB_BACKUP_CONTENT_READ'}
Data Guardアソシエーションの作成:
ターゲット・リソースでタグベース・ポリシーを使用してData Guardアソシエーションを作成することは、サポートされていません。
データ・カタログ・サービスの制限事項
データ・カタログのリソースに必要なタグベースのアクセス制御ポリシーに加え、data-catalog-family
のために次の追加ポリシーが必要になります:
allow group resource_managers to read data-catalog-family in tenancy where request.operation = 'GetWorkRequest'
allow group resource_managers to read data-catalog-family in tenancy where request.operation = 'ListWorkRequestErrors'
allow group resource_managers to read data-catalog-family in tenancy where request.operation = 'listworkrequestlogs'
データ・サイエンス・サービスの制限事項
データ・サイエンスのリソースに必要なタグベースのアクセス制御ポリシーに加え、data-science-work-requests
の管理権限を許可するポリシーが必要になります。
追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage data-science-work-requests in compartment Compartment1
デジタル・アシスタントの制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 |
---|---|---|
Digital Assistant | oda-design
|
すべての権限 |
oda-insights
|
すべての権限 |
デジタル・アシスタントのリソースに必要なタグベースのアクセス制御ポリシーに加え、oda-instances
のために次の追加ポリシーが必要になります:
allow group TestGroup to inspect oda-instances in compartment Compartment1
allow group TestGroup to read oda-instances in compartment Compartment1 request.operation = 'GetWorkRequest'
allow group TestGroup to read oda-instances in compartment Compartment1 request.operation = 'ListWorkRequestErrors'
allow group TestGroup to read oda-instances in compartment Compartment1 request.operation = 'listworkrequestlogs'
ロード・バランシング・サービスの制限事項
追加のポリシーが必要なシナリオ:
ロード・バランサの更新:
ロード・バランサに対する更新を実行するには、load-balancers
に必要なタグベース・アクセス制御ポリシーに加えて:
allow group TestGroup to manage load-balancers in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
GetWorkRequest API操作を許可するポリシーが必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to read load-balancers in compartment Compartment1 where request.operation = 'GetWorkRequest'
network-security-group
ロード・バランサの削除:
ロード・バランサを削除するには、load-balancers
、subnets
およびnetwork-security-group
に必要なタグベース・アクセス制御ポリシーに加えて:
allow group TestGroup to manage load-balancers in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
allow group TestGroup to use subnets in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
allow group TestGroup to use network-security-group in compartment Compartment1 where target.resource.tag.TagNS.TagKey= 'test'
vnics
に対する次の追加権限が必要になります:
allow group TestGroup to use vnics in compartment Compartment1 where ANY {request.permission = 'VNIC_DETACH', request.permission = 'VNIC_DELETE', request.permission='VNIC_DISASSOCIATE_NETWORK_SECURITY_GROUP'}
ネットワーキング・サービスの制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 | ノート |
---|---|---|---|
ネットワーキング | private-ips
|
PRIVATE_IP_UPDATE PRIVATE_IP_DELETE VNIC_UNASSIGN SUBNET_DETACH |
|
route-tables
|
UPDATE (INTERNET_GATEWAY_DETACH) | ルート・ルールの削除はサポートされていません。 | |
vnics
|
VNIC_UPDATE VNIC_DELETE |
サービス・ゲートウェイまたはNATゲートウェイのルート表へのアタッチ:
ターゲット・リソースに対するタグベース・ポリシーを使用した、サービス・ゲートウェイまたはNATゲートウェイのルート表へのアタッチは、サポートされていません。
追加のポリシーが必要なシナリオ:
VCNへのDRGのアタッチ:
DRGをVCNにアタッチするには、virtual-network-family
およびvcns
に必要なタグベース・アクセス制御ポリシーに加えて:
allow group TestGroup to use virtual-network-family in compartment Compartment1 where target.resource.tag.TagNS.TagKey = 'test'
drgs
に対するmanage
権限を許可するポリシーが必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage drgs in compartment Compartment1
NoSQLデータベース・クラウド・サービスの制限事項
サポートされているリソース: nosql-tables
、nosql-rows
およびnosql-indexes
。
NoSQLデータベース・クラウドのリソースに必要なタグベースのアクセス制御ポリシーに加えて、次の追加ポリシーが必要になります:
allow group TestGroup to read nosql-tables in compartment Compartment1 where request.operation='ListWorkRequests'
allow group TestGroup to read nosql-tables in compartment Compartment1 where request.operation='ListWorkRequestErrors'
allow group TestGroup to read nosql-tables in compartment Compartment1 where request.operation='ListWorkRequestLogs'
前述のポリシーはNoSQLデータベース・クラウド・リソースをコンソールでナビゲートするために必要であることに注意してください。
オブジェクト・ストレージ・サービスの制限事項
サービス | リソース・タイプ | target.resource.tagポリシー変数でサポートされていない権限 | ノート |
---|---|---|---|
オブジェクト・ストレージ | objects
|
objects へのアクセスに関連するすべての権限 |
オブジェクトはタグ付けできません。 |
オブジェクトへのアクセスは、オブジェクトが属するバケットのタグを使用して管理できます。
target.bucket.tag
ポリシー変数を使用します。ユーザーへのオブジェクトのオブジェクト・ストレージ・バケットの作成を参照してください。パブリックDNSの制限事項
dns
のリソースに必要なタグベースのアクセス制御ポリシーに加え、dns-records
のmanage
権限を許可するポリシーが必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage dns-records in compartment Compartment1
タグ・ネームスペースの制限事項
ネームスペースのタグに基づいてユーザーにタグ・ネームスペースへのアクセス権を付与するポリシーでは、そのタグ・ネームスペースのタグ・キー定義の作成または削除はユーザーに許可されません。
ポリシーの例:
allow group TestGroup to manage tag-namespaces in compartment Compartment1 where target.resource.tag.TagNS.TagKey='test'
これは、TestGroupのユーザーが、TagNS.TagKey='test'でタグ付けされたタグ・ネームスペースでタグ・キー定義を作成または削除することを許可しません。
WAFの制限事項
WAFのリソースに必要なタグベースのアクセス制御ポリシーに加え、waas-work-request
の管理権限を許可するポリシーが必要になります。追加の権限があるポリシー例を次に示します:
allow group TestGroup to manage waas-work-request in compartment Compartment1
図で示される例
グループに適用されるタグの使用例
次の例は、ユーザー・グループに適用されたタグを使用してコンパートメント内のリソースへのアクセスを管理する方法を示しています。
ProjectA、ProjectBおよびProjectCという3つのコンパートメントがあるとします
各コンパートメントに対して、管理グループ(A-Admins、B-Admins、C-Admins)が設定されています。
各管理グループには、次のポリシーを通じてそのコンパートメントに対する完全なアクセス権があります:
allow group A-Admins to manage all-resources in compartment ProjectA
allow group B-Admins to manage all-resources in compartment ProjectB
allow group C-Admins to manage all-resources in compartment ProjectC
組織では、次のタグ・ネームスペースとキーを設定し、各グループをそのロールでタグ付けしています:
- EmployeeGroup.Role
このタグの値には、「Admin」、「Developer」、「Test-Engineer」があります。
すべての管理グループにEmployeeGroup.Role='Admin'のタグが付けられています
ここで、3つのプロジェクトのメンバーが共有するためのテスト・コンパートメントを設定します。既存の3つの管理グループすべてに対して、管理アクセス権を付与します。これを行うには、次のようなポリシーを記述します:
allow any-user to manage all-resources in compartment Test where request.principal.group.tag.EmployeeGroup.Role='Admin'
このポリシーでは、タグの付いた既存の管理グループすべてが、テスト・コンパートメントへのアクセス権を持つようになります。また、将来EmployeeGroup.Role='Admin'でタグ付けする新規または既存のグループは、ポリシー・ステートメントを更新しなくてもテスト・コンパートメントにアクセスできます。
ターゲット・リソースに適用されるタグの使用例
この例では、組織のプロジェクト・コンパートメントごとに、TestおよびProdという2つの子コンパートメントがあります。テスト・エンジニアに対して、3つのプロジェクトすべてのテスト・コンパートメントへのアクセス権を付与します。これを行うには、タグを作成します:
ResourceGroup.Role='Test'
また、これを各プロジェクト・コンパートメント内のテスト・コンパートメントに適用します。
次のようなポリシーを使用できます:
allow group Testers to use all-resources in tenancy where target.resource.compartment.tag.ResourceGroup.Role='Test'
これにより、Testersグループに3つのテスト・コンパートメントすべてのリソースへのアクセスを許可します。