ポリシーの例
次の例では、データ統合の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 tenancyallow 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 tenancyadmit group <group-name> of tenancy <target-tenancy-name> to manage dis-workspaces in tenancyadmit 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 tenancyAdmit group <group-name> of tenancy <any-name2> to use object-family in compartment <compartment-name>
データ統合でAutonomous AI LakehouseまたはAutonomous AI Transaction Processingデータベースをターゲット・データベースとして使用する場合、OCI Object Storageはデータのステージングと操作の完了に使用されます。必要なオブジェクト・ストレージ・ポリシーに加えて、このようなリクエストに対する事前認証を許可するために次のポリシーも作成する必要があります:
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>'}