ポリシーの例
次の例では、データ統合のIAMポリシーについて学習します。
ポリシー・ステートメント全体の構文:
allow <subject> to <verb> <resource-type> in <location> where <condition>
各変数の詳細は、ポリシー構文を参照してください。
IAMコンポーネント(動的グループやポリシー・ステートメントなど)を追加した後は、関連付けられたタスクをすぐに実行しないでください。新しいIAMポリシーを有効にするには、約5分から10分かかります。
オブジェクトをエクスポートおよびインポートするには、「ワークスペース内のワークスペースおよびオブジェクトのエクスポートおよびインポートの有効化」を参照してください。
ブログOracle Cloud Infrastructure (OCI) Data Integrationのポリシーも確認して、必要なポリシーを特定してください。
データ統合ワークスペースを使用するには、ポリシーを作成する必要があります。
データ・ソースに対するプライベート・ネットワーク接続を使用するには、統合のために設定した仮想ネットワークを管理する権限をデータ統合に付与する必要があります。
次のポリシーがない場合、データ統合は失敗します。
allow service dataintegration to use virtual-network-family in compartment <compartment-name>
コンパートメント内のネットワーキング・リソースを管理する権限をグループに付与するには:
allow group <group-name> to manage virtual-network-family in compartment <compartment-name>
管理者以外のユーザーの場合:
allow group <group-name> to use virtual-network-family in compartment <compartment-name>
allow group <group-name> to inspect instance-family in compartment <compartment-name>
ユーザーおよびコンパートメントをリストする権限をデータ統合付与するには、inspect
を使用できます。
allow service dataintegration to inspect users in tenancy
allow group <group-name> to inspect compartments in compartment <target-compartment-name>
グループがすべてのデータ統合ワークスペースのリストを表示できるようにするには、inspect
を使用できます。
特定のコンパートメント内のワークスペースを表示するには:
allow group <group-name> to inspect dis-workspaces in compartment <compartment-name>
グループがすべてのデータ統合ワークスペースのリストを表示できるようにするには、inspect
を使用できます。
dis-workspaces
の動詞read
には、inspect
と同じ権限およびAPI操作に加えて、権限DIS_WORKSPACE_READ
と、それがカバーするAPI操作が含まれます。
グループが特定のコンパートメント内のdis-workspaces
をリストし、その詳細を取得できるようにするには、動詞read
を使用できます:
allow group <group-name> to read dis-workspaces in compartment <compartment-name>
グループがdis-workspaces
およびテナンシ内のそれに含まれるオブジェクトをリストし、その詳細を取得できるようにするには、次を使用できます:
allow group <group-name> to read dis-workspaces in tenancy
グループがワークスペースおよびそれに含まれるオブジェクトを更新できるようにするには、動詞use
を使用できます。
dis-workspaces
の動詞use
には、read
およびinspect
と同じ権限およびAPI操作に加えて、権限DIS_WORKSPACE_UPDATE
と、それがカバーするAPI操作が含まれます。
グループが特定のコンパートメント内のdis-workspaces
を更新できるようにするには、次を使用できます:
allow group <group-name> to use dis-workspaces in compartment <compartment-name>
グループがdis-workspaces
およびテナンシ内のそれに含まれるオブジェクトを更新できるようにするには、次を使用できます:
allow group <group-name> to use dis-workspaces in tenancy
グループが特定のワークスペースのみを更新できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where target.workspace.id = '<workspace-ocid>'
グループが指定のワークスペースのセットを更新できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where ANY (target.workspace.id = '<workspace-1-ocid>', target.workspace.id = '<workspace-2-ocid>')
グループがワークスペースおよびそれに含まれるオブジェクトを管理できるようにするには、動詞manage
を使用できます。
dis-workspaces
の動詞manage
には、inspect
、read
およびuse
と同じ権限およびAPI操作に加えて、権限DIS_WORKSPACE_CREATE
、DIS_WORKSPACE_DELETE
、およびそれがカバーするAPI操作が含まれます。
グループが特定のコンパートメント内のdis-workspaces
を管理できるようにするには、次を使用できます:
allow group <group-name> to manage dis-workspaces in compartment <compartment-name>
グループがdis-workspaces
およびテナンシ内のそれに含まれるオブジェクトを管理できるようにするには、次を使用できます:
allow group <group-name> to manage dis-workspaces in tenancy
グループが特定のワークスペースのみを管理できるようにするには:
allow group <group-name> to manage dis-workspaces in compartment <compartment-name> where target.workspace.id = '<workspace-ocid>'
グループが指定のワークスペースのセットを管理できるようにするには:
allow group <group-name> to manage dis-workspaces in compartment <compartment-name> where ANY (target.workspace.id = '<workspace-1-ocid>', target.workspace.id = '<workspace-2-ocid>')
データ統合がテナント内のワークスペース内で検索できるようにするには、テナンシのルート・コンパートメント内に次のポリシーを定義します。
allow service dataintegration to {TENANCY_INSPECT} in tenancy
allow service dataintegration to {DIS_METADATA_INSPECT} in tenancy
データ統合では、エクスポートおよびインポートを使用する特定のポリシーが必要です。オブジェクトのエクスポートおよびインポートのトピックの必要な設定およびポリシーを参照してください。
データ統合では、エクスポートおよびインポートのためにオブジェクト・ストレージのリソースにアクセスする必要もあります。OCIオブジェクト・ストレージへのアクセスを有効にするポリシーの例を参照してください。
別のテナンシ(ソース)にある既存のアプリケーションまたはプロジェクトからリソースをコピーしてテナンシ(ターゲット)にアプリケーションまたはプロジェクトを作成するには、ソース・テナンシおよびターゲット・テナンシに特定のポリシーを設定する必要があります。
クロステナンシ・ポリシー・ステートメントを記述するには、次のものが必要です:
- ターゲット・テナンシ名およびOCID
- ソース・テナンシ名およびOCID
- ユーザーがソース・ワークスペースおよびターゲット・ワークスペースに対する読取りおよび書込み権限を持つグループのユーザー・グループOCID
ターゲット・テナンシで:
ターゲット・テナンシは、新しいアプリケーションまたはプロジェクト・コピーを作成する場所です。
-
ユーザー・グループを作成し、そのグループにユーザーを追加します。
-
次のステートメントを使用してポリシーを定義します:
define tenancy <source-tenancy-name> as <source-tenancy-OCID>
endorse group <group-name> to manage dis-family in tenancy <source-tenancy-name>
endorse group <group-name> to manage dis-workspaces in tenancy <source-tenancy-name>
endorse group <group-name> to read compartments in tenancy <source-tenancy-name>
endorse any-user to read compartments in tenancy <source-tenancy-name> where ALL {request.principal.type = 'disworkspace'}
endorse any-user to manage dis-workspaces in tenancy <source-tenancy-name> where ALL {request.principal.type = 'disworkspace'}
ソース・テナンシで:
ソース・テナンシには、コピーされる既存のアプリケーションまたはプロジェクトを含むワークスペースがあります。
-
次のステートメントを使用してポリシーを定義します:
define tenancy <target-tenancy-name> as <target-tenancy-OCID>
define group <group-name> as <group-OCID>
-
すべてのワークスペースへの汎用アクセス:
admit group <group-name> of tenancy <target-tenancy-name> to read compartments in tenancy
admit group <group-name> of tenancy <target-tenancy-name> to manage dis-workspaces in tenancy
admit any-user of tenancy <target-tenancy-name> to read compartments in tenancy where ALL {request.principal.type = 'disworkspace'}
admit any-user of tenancy <target-tenancy-name> to manage dis-workspaces in tenancy where ALL {request.principal.type = 'disworkspace'}
汎用アクセスのかわりに、ソース・ワークスペースOCIDまたはソース・アプリケーション・キーに基づく、より詳細な権限を提供できます。
admit group <group-name> of tenancy <target-tenancy-name> to manage dis-workspaces in tenancy where source.workspace.id = '<source-tenancy-workspace-OCID>'
admit group <group-name> of tenancy <target-tenancy-name> to manage dis-workspaces in tenancy where source.application.key = '<source-existing-application-key>'
条件で権限を使用する例を次にいくつか示します:
allow group <group-name> to use dis-workspace in compartment <compartment-name> where request.permission = 'DIS_WORKSPACE_READ'
allow group <group-name> to use dis-workspace in compartment <compartment-name> where request.permission = 'DIS_WORKSPACE_UPDATE'
条件でAPI操作を使用する例を次にいくつか示します:
allow group <group-name> to use dis-workspace in compartment <compartment-name> where request.operation = 'GetWorkspace'
allow group <group-name> to use dis-workspace in compartment <compartment-name> where request.operation = 'UpdateWorkspace'
1つの権限に複数のAPIを関連付けることができます。ポリシーに特定のAPIではなく権限を使用する場合は、各API操作に必要な権限を参照して、使用する予定のAPIがポリシーでカバーされていることを確認してください。
ポリシーに条件を追加する場合は、変数を使用します。すべてのリクエストの一般的な変数を参照してください。
条件ステートメントを含むポリシーには、where
句があります。たとえば、グループが特定のワークスペースのみを更新できるようにするには:
allow group <group-name> to use dis-workspace in compartment <compartment-name> where target.workspace.id = '<workspace-ocid>'
ワークスペースを作成したグループのみがそのワークスペースを使用できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where target.workspace.createdBy = request.user.id
グループが(ワークスペースの削除を除いて)すべてのデータ統合リソースを管理できるようにするには:
allow group <group-name> to manage dis-family in compartment <compartment-name> where request.permission != 'DIS_WORKSPACE_DELETE'
where
句でキーを使用するポリシー・ステートメントを使用すると、グループ内のユーザーは、リクエストにその特定のキーがあるコンパートメント内のワークスペースを使用できます。たとえば、グループが特定のアプリケーション内でのみ操作できるようにすることができます。
グループが特定のアプリケーション内でのみタスクを実行できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where any {target.application.key='<application-key>'}
グループが、あるフォルダ内にのみオブジェクト(タスクやデータ・フローなど)を作成できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where any {target.folder.key='<folder-key>'}
グループが特定のオブジェクト(データ・フローなど)のみを更新または削除できるようにするには:
allow group <group-name> to use dis-workspaces in compartment <compartment-name> where any {target.object.key='<object-key>'}
データ統合では、メタデータへのアクセスおよびデータの読取りと書込みを行うために、Oracle Cloud Infrastructure Object Storageに対する特定の権限が必要です。
オブジェクト・ストレージ・データ・アセットを作成し、そのスキーマを参照するには、オブジェクト・ストレージの読取り権限を持つユーザー・グループに属している必要があります。On Behalf Ofポリシーの例を参照してください。
オブジェクト・ストレージ接続をテストするには、データ統合のワークスペースまたはコンパートメントに、少なくともobjectstorage-namespaces
へのREAD
アクセス権があることを確認してください。リソース・プリンシパル・ポリシーの例を参照してください。
オブジェクト・ストレージをソースまたはターゲットとして作成および実行するには、リソース・プリンシパル・ポリシーの例で説明されているすべてのポリシーがワークスペースまたはコンパートメントに含まれている必要があります。
WHERE句の内容はオプションですが、Oracle Cloud Infrastructure Object Storageにアクセスするリソースを制限するためには必要です。これを使用すると、特定のニーズに応じてアクセスを微調整できます。ポリシー・ステートメントの適用先が:
- すべてのワークスペースの場合、
WHERE ALL {request.principal.type='disworkspace'}
を使用します - 特定のワークスペースの場合、
WHERE ALL {request.principal.id='<workspace-OCID>'}
を使用しますコンソールからワークスペースOCIDをコピーできます。
- 特定のコンパートメント内のすべてのワークスペースの場合、
WHERE ALL {request.resource.compartment.id = '<compartment-OCID>'}
を使用します
オブジェクト・ストレージへのアクセスを制御するためにポリシーを記述する方法の詳細は、オブジェクト・ストレージの詳細を参照してください。
これらのポリシーは、データ統合のワークスペースまたはそのコンパートメントに対して、Oracle Cloud Infrastructure Object Storageへの接続の検証と、データの読取りおよび書込みを許可します。
必要なポリシーは、オブジェクト・ストレージ・データ・アセットとデータ統合ワークスペースが同じテナンシにあるか、異なるテナンシにあるかによって異なります。
同じテナンシ内にある場合
データ統合ワークスペースとオブジェクト・ストレージ・データ・ソースが同じテナンシ内にある場合は、次のポリシーを作成する必要があります:
allow any-user to read buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>', request.operation = 'GetBucket'}
allow any-user to manage objects in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>'}
異なるテナンシ内にある場合
データ統合ワークスペースとオブジェクト・ストレージ・データ・ソースが異なるテナント内にある場合は、次のポリシーを作成する必要があります:
ワークスペース・テナンシで:
Endorse any-user to read buckets in tenancy <tenancy-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>', request.operation = 'GetBucket'}
Endorse any-user to manage objects in tenancy <tenancy-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>'}
Endorse any-user to manage buckets in tenancy <tenancy-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>', request.permission = 'PAR_MANAGE'}
Endorse any-user to inspect compartments in tenancy <tenancy-name> where ALL {request.principal.type = 'disworkspace'}
オブジェクト・ストレージ・テナンシで:
Admit any-user of tenancy <tenancy-name> to read buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>', request.operation = 'GetBucket'}
Admit any-user of tenancy <tenancy-name> to manage objects in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>'}
Admit any-user of tenancy <tenancy-name> to manage buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-OCID>', request.permission = 'PAR_MANAGE'}
Admit any-user of tenancy <tenancy-name> to inspect compartments in tenancy
これらのポリシーは、ログイン・ユーザーに対して、コンパートメント、オブジェクト・ストレージ・バケット、およびすでにユーザーに割り当てられている権限に基づくオブジェクトをリストおよび参照することを許可します。
必要なポリシーは、オブジェクト・ストレージ・データ・アセットとデータ統合ワークスペースが同じテナンシにあるか、異なるテナンシにあるかによって異なります。
同じテナンシ内にある場合
データ統合ワークスペースとオブジェクト・ストレージ・データ・アセットが同じテナンシに属している場合、ユーザー(またはユーザーが属するグループ)がオブジェクト・ストレージへのアクセス権を持っている必要があります:
allow group <group-name> to use object-family in compartment <compartment-name>
異なるテナンシ内にある場合
データ統合ワークスペースとオブジェクト・ストレージ・データ・アセットが異なるテナント内にある場合は、次のポリシーを作成する必要があります:
ワークスペース・テナンシで:
Define tenancy <any-name1> as <object-storage-tenancy-OCID>
Endorse group <group-name> to inspect compartments in tenancy <any-name1>
Endorse group <group-name> to use object-family in tenancy <any-name1>
オブジェクト・ストレージ・テナンシで:
Define tenancy <any-name2> as <workspace-tenancy-OCID>
Define group <workspace-tenancy-group-name> as <workspace-tenancy-group-OCID>
Admit group <group-name> of tenancy <any-name2> to inspect compartments in tenancy
Admit group <group-name> of tenancy <any-name2> to use object-family in compartment <compartment-name>
データ統合でAutonomous Data WarehouseまたはAutonomous Transaction Processingデータベースをターゲット・データベースとして使用する場合、データのステージングおよび操作の完了にOCIオブジェクト・ストレージが使用されます。必要なオブジェクト・ストレージ・ポリシーに加えて、このようなリクエストの事前認証を許可する次のポリシーも作成する必要があります:
allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>', request.permission = 'PAR_MANAGE'}
OCIデータ統合からプライベート・エンドポイントを含むOCIデータ・フロー・サービスにタスクを公開する前に、次のポリシーがあることを確認してください。
allow any-user to manage dataflow-application in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>'}
allow any-user to manage dataflow-run in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>'}
allow group <group-name> to read dataflow-application in compartment <compartment-name>
allow group <group-name> to manage dataflow-run in compartment <compartment-name>
allow any-user to read dataflow-private-endpoint in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>'}
allow any-user to read secret-bundles in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<workspace-ocid>'}
非管理者ユーザーの場合、次のポリシーが必要です:
allow group <group-name> to inspect dataflow-private-endpoint in compartment <compartment-name>
allow group <group-name> to read secret-bundles in compartment <compartment-name>
アプリケーション・リソース・プリンシパルを使用してRESTタスクの実行を認証するには、次を追加してOCIリソース・プリンシパルを取得します。
allow any-user to use ai-service-language-family in tenancy where ALL {request.principal.type = 'disapplication', request.principal.id = '<disapplication-ocid>'}