クロス・テナント・オブジェクト・ストレージ・アクセス
データ・フローの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>'}