オブジェクト・ストレージへのクロス・テナンシ・アクセス
データ・フローのSQLエンドポイントは、テナンシ全体でオブジェクト・ストレージにアクセスできます。存在するテナンシとは異なるテナンシで何かを実行できます。
2番目のテナンシに格納されているオブジェクトの読取り中に、1つのテナンシにデータ・フローSQLエンドポイントがあります。それに応じて、各テナンシにポリシーを適用する必要があります。例:
- SQLエンドポイントは、テナンシ
Tenancy-A
のdataflow-sample-endpoint
です。 - 読取り対象のオブジェクトは
Tenancy-B
というテナンシにあり、オブジェクトの索引は同じバケットに作成されます。
tenancy-a-group
に対してTenancy-B
内のバケットおよびオブジェクトの読取りを許可します。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
のオブジェクトを読み取ることができます。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-compartment
のyour-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>'}