ポリシーの例

次の例を使用して、データ統合IAMポリシーについて学習します。

ポリシー・ステートメント全体の構文:

allow <subject> to <verb> <resource-type> in <location> where <condition>

各変数の詳細は、ポリシー構文を参照してください。

ノート

IAMコンポーネント(動的グループやポリシー・ステートメントなど)を追加した後は、関連付けられたタスクをすぐに実行しないでください。新しいIAMポリシーを有効にするには、約5分から10分かかります。

オブジェクトをエクスポートおよびインポートするには、「ワークスペース内のワークスペースおよびオブジェクトのエクスポートおよびインポートの有効化」を参照してください。

ニーズに適したポリシーを特定するには、このポリシー・ブログも確認してください。

データ統合にアクセスしてワークスペースを使用できるようにするポリシーの例

データ統合ワークスペースを使用するには、ポリシーを作成する必要があります。

ワークスペースでのプライベート・ネットワークの使用の有効化

データ・ソースに対するプライベート・ネットワーク接続を使用するには、統合のために設定した仮想ネットワークを管理する権限をデータ統合に付与する必要があります。

次のポリシーがない場合、データ統合は失敗します。

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>')
ノート

コンソールからワークスペースOCIDをコピーできます。
ワークスペースを管理するためのアクセス権の有効化

グループがワークスペースおよびそれに含まれるオブジェクトを管理できるようにするには、動詞manageを使用できます。

dis-workspacesの動詞manageには、inspectreadおよびuseと同じ権限およびAPI操作に加えて、権限DIS_WORKSPACE_CREATEDIS_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>')
ノート

コンソールからワークスペースOCIDをコピーできます。
ワークスペースでのオブジェクトのエクスポートおよびインポートの許可

データ統合では、エクスポートおよびインポートを使用する特定のポリシーが必要です。オブジェクトのエクスポートおよびインポートのトピックの必要な設定およびポリシーを参照してください。

データ統合では、エクスポートおよびインポートのためにオブジェクト・ストレージのリソースにアクセスする必要もあります。OCIオブジェクト・ストレージへのアクセスを有効にするポリシーの例を参照してください。

プロジェクト・コピーおよびアプリケーション・コピーのクロステナンシ・アクセスを設定するポリシーの例

別のテナンシ(ソース)にある既存のアプリケーションまたはプロジェクトからリソースをコピーしてテナンシ(ターゲット)にアプリケーションまたはプロジェクトを作成するには、ソース・テナンシおよびターゲット・テナンシに特定のポリシーを設定する必要があります。

クロステナンシ・ポリシー・ステートメントを記述するには、次のものが必要です:

  • ターゲット・テナンシ名およびOCID
  • ソース・テナンシ名およびOCID
  • ユーザーがソース・ワークスペースおよびターゲット・ワークスペースに対する読取りおよび書込み権限を持つグループのユーザー・グループOCID

ターゲット・テナンシで:

ターゲット・テナンシは、新しいアプリケーションまたはプロジェクト・コピーを作成する場所です。

  1. ユーザー・グループを作成し、そのグループにユーザーを追加します。

  2. 次のステートメントを使用してポリシーを定義します:

    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'}

ソース・テナンシで:

ソース・テナンシには、コピーされる既存のアプリケーションまたはプロジェクトを含むワークスペースがあります。

  1. 次のステートメントを使用してポリシーを定義します:

    define tenancy <target-tenancy-name> as <target-tenancy-OCID>
    define group <group-name> as <group-OCID>
  2. すべてのワークスペースへの汎用アクセス:

    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>'
ポリシーの権限およびAPIの例

条件で権限を使用する例を次にいくつか示します:

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がポリシーでカバーされていることを確認してください。
条件ステートメントを含むポリシーの例
ノート

コンソールからワークスペースOCIDをコピーできます。

ポリシーに条件を追加する場合は、変数を使用します。すべてのリクエストの一般的な変数を参照してください。

条件ステートメントを含むポリシーには、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>'}
OCIオブジェクト・ストレージへのアクセスを有効にするポリシーの例

データ統合では、メタデータへのアクセスおよびデータの読取りと書込みを行うために、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
On Behalf Ofポリシーの例

これらのポリシーは、ログイン・ユーザーに対して、コンパートメント、オブジェクト・ストレージ・バケット、およびすでにユーザーに割り当てられている権限に基づくオブジェクトをリストおよび参照することを許可します。

データ統合ワークスペースとオブジェクト・ストレージ・データ・アセットが同じテナンシに属している場合と、異なるテナンシに属している場合では、ポリシーが若干異なります。

同じテナンシ内にある場合

データ統合ワークスペースとオブジェクト・ストレージ・データ・アセットが同じテナンシに属している場合、ユーザー(またはユーザーが属するグループ)がオブジェクト・ストレージへのアクセス権を持っている必要があります:

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 Databaseをターゲットとして使用するポリシーの例

データ統合でAutonomous Data WarehouseまたはAutonomous 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データ統合からプライベート・エンドポイントを含む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>
OCI AIサービスRESTエンドポイントにアクセスするポリシーの例

アプリケーション・リソース・プリンシパルを使用してRESTタスクの実行を認証するには、次を追加してOCIリソース・プリンシパルを取得します。

allow any-user to use ai-service-language-family in tenancy where ALL {request.principal.type = 'disapplication', request.principal.id = '<disapplication-ocid>'}