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

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

2番目のテナンシに格納されているオブジェクトの読取り中に、1つのテナンシにデータ・フローSQLエンドポイントがあります。それに応じて、各テナンシにポリシーを適用する必要があります。例:
  • SQLエンドポイントは、テナンシTenancy-Adataflow-sample-endpointです。
  • 読取り対象のオブジェクトはTenancy-Bというテナンシにあり、オブジェクトの索引は同じバケットに作成されます。
tenancy-a-groupに対してTenancy-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>'}