リソース・プリンシパル・ポリシー
たとえば、Sparkストリーミングでリソース・プリンシパルを使用する場合は、データ・フローに特定のポリシーが必要です。
それらのポリシーをリソース・プリンシパルに追加する方法は3つあります:
ポリシー・ビルダーのデータ・フロー・リソース・プリンシパル・テンプレートの使用
ポリシー・ビルダーのデータ・フロー・テンプレートを使用して、リソース・プリンシパルのポリシーを設定します。
- データ・フロー・リソースにオブジェクト・ストレージの使用を許可
- 動的グループが、指定したオブジェクト・ストレージの場所にオブジェクトを作成して使用できるようにします。テナンシにポリシーを作成します。
- データ・フロー・リソースによるOracle Streamingからの消費を許可
- 動的グループがOracle Streamingから消費できるようにします。テナンシにポリシーを作成します。
- データ・フロー・リソースによるOracle Streamingへの書込みを許可
- 動的グループがOracle Streamingへの生成を行えるようにします。テナンシにポリシーを作成します。
動的グループの使用
動的グループを使用すると、記述するポリシーをより簡潔にして、同じグループを再利用できます。また、タグを参照し、グループを特定のデータ・フロー・アプリケーションに制限することができます。
- すべてのデータ・フローの実行を許可するコンパートメントを指定します:(オプション)コンパートメント内の特定のデータ・フロー・アプリケーションに制限することが可能です:
ALL {resource.type='dataflowrun', resource.compartment.id='<compartment_id>'}
ALL {resource.type='dataflowrun', resource.compartment.id='<compartment_id>', tag.oci-dataflow.application-id.value='<application_id>'}
- データ・フロー・リソース・プリンシパルが、ストリーミング・ストリーム・プールおよびオブジェクト・ストレージ・バケットから消費できるようにします:
ALLOW DYNAMIC-GROUP DF-IN-ROOT TO {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME} IN TENANCY WHERE ANY {target.streampool.id = '<streampool_id>'} ALLOW DYNAMIC-GROUP DF-IN-ROOT TO MANAGE OBJECTS IN TENANCY WHERE ANY {target.bucket.name = '<bucket_name>', target.bucket.name = '<bucket_name>'}
オールインワン・ポリシーの使用
特定のコンパートメントのすべてのデータ・フロー実行は、特定のストリーム・プールおよびオブジェクト・ストレージ・バケットから消費します。
ALLOW ANY-USER TO {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME} IN TENANCY WHERE ALL
{request.principal.type='dataflowrun', request.resource.compartment.id = '<compartment_id>', target.streampool.id = '<streampool_id>'}
ALLOW ANY-USER TO MANAGE OBJECTS IN TENANCY WHERE ALL
{request.principal.type='dataflowrun', request.resource.compartment.id = '<compartment_id>', target.bucket.name = '<bucket_name>'}