クロス・テナント・オブジェクト・ストレージ・アクセス

データ・フローのSQLエンドポイントは、テナンシ全体でオブジェクト・ストレージにアクセスできます。存在するテナンシとは異なるテナンシで何かを実行できます。

2番目のテナンシに格納されているオブジェクトの読取り中に、1つのテナンシにデータ・フローSQLエンドポイントがあります。それに応じて、各テナンシにポリシーを適用する必要があります。例:
  • SQLエンドポイントは、テナンシTenancy-Adataflow-sample-endpointです。
  • 読み取るオブジェクトはTenancy-Bというテナンシにあり、オブジェクトの索引は同じバケットに作成されます。
tenancy-a-groupTenancy-B内のバケットおよびオブジェクトの読取りを許可します:
  1. Tenancy-Aのルート・コンパートメントに次のポリシーを適用します:
    define tenancy Tenancy-B as tenancy-b-ocid
    endorse any-user to read buckets in tenancy Tenancy-B where ALL {request.principal.type='dataflowsqlendpoint',request.principal.id = '<dataflow-sample-endpoint-ocid>'}
    endorse any-user to manage objects in tenancy Tenancy-B where ALL {request.principal.type='dataflowsqlendpoint',request.principal.id = '<dataflow-sample-endpoint-ocid>'}
    endorse any-user to read object-family in tenancy Tenancy-B where ALL {request.principal.type='datacatalogmetastore'}

    最初のステートメントは、わかりやすいラベルをTenancy-BのOCIDに割り当てるdefineステートメントです。2番目と3番目の文を使用すると、dataflow-sample-endpointはバケットを読み取り、Tenancy-B内のオブジェクトを管理できます。最後の文を使用すると、メタストアはTenancy-B内のオブジェクトを読み取ることができます。

  2. 次のポリシーをTenancy-Bのルート・コンパートメントに適用します:
    define tenancy Tenancy_A as tenancy-a-ocid
    admit any-user of tenancy Tenancy-A to read buckets in compartment <compartment> where ALL {request.principal.type='dataflowsqlendpoint',request.principal.id = '<dataflow-sample-endpoint-ocid>'}
    admit any-user of tenancy Tenancy-A to manage objects in compartment <compartment> Tenancy-B where ALL {request.principal.type='dataflowsqlendpoint',request.principal.id = '<dataflow-sample-endpoint-ocid>'}
    admit any-user of tenancy Tenancy-A to read object-family in compartment <compartment> where ALL {request.principal.type='datacatalogmetastore'}

    最初のステートメントは、テナンシAのOCIDにフレンドリ・ラベルを割り当てるdefineステートメントです。2番目と3番目のステートメントでは、dataflow-sample-endpointがバケットを読み取り、Tenancy-Bのオブジェクトを管理できます。最後の文を使用すると、メタストアはテナンシBのオブジェクトを読み取ることができます。'admit'という語は、アクセスがバケットおよびオブジェクトが存在するテナンシ外のdataflow-sample-endpointに適用されることを示します。

    管理対象オブジェクト・ポリシーをバケットに制限することで、さらに制限できます。たとえば、your-compartmentyour-bucketというバケットに制限します:

    admit any-user of tenancy Tenancy-A to manage objects in compartment your-compartment Tenancy-B where ALL {target.bucket.name = 'your-bucket', request.principal.type='dataflowsqlendpoint',request.principal.id = '<dataflow-sample-endpoint-ocid>'}