Identity and Access Managementポリシーの設定

データ・フローでは、Sparkアプリケーションを管理および実行するために、Identity and Access Management (IAM)に共通ポリシーを設定する必要があります。

IAMのポリシー・テンプレートを使用するか、ポリシーを手動で作成できます。IAMポリシーの仕組みの詳細は、アイデンティティ・ドメインのないIdentity and Access Managementのドキュメントまたはアイデンティティ・ドメインを使用したIdentity and Access Managementのドキュメントを参照してください。次の4つのポリシーを作成します:
  • dataflow-service-level-policy
  • dataflow-admins-policy
  • dataflow-data-engineers-policy
  • dataflow-sql-users-policy

データ・フロー・ポリシー・テンプレート

データ・フローには4つの共通ポリシー・テンプレートがあります。これらは、ポリシーを作成する必要がある順序でリストされます。

データ・フロー管理者がすべてのアプリケーションと実行を管理
サービスで任意のアクションを実行できるサービスの管理者のようなユーザー(またはスーパーユーザー)向けです。これにはグループに割り当てられたポリシーに従って、他のユーザーが所有するアプリケーションやテナンシ内のユーザーによって開始された実行の管理が含まれます
データ・フロー・ユーザーが自分のアプリケーションと実行を管理。
自身のアプリケーションを作成および削除する権限のみを持っている他のすべてのユーザー。ただし、テナンシ内のアプリケーションは実行でき、他のユーザーが所有するアプリケーションの削除や他のユーザーが開始した実行の取消しなどの管理権限は持ちません。
ユーザーまたはグループのかわりに、データ・フロー・サービスが、テナンシ内のオブジェクトに対してアクションを実行することを許可。
データ・フロー・サービスでは、テナンシ内のオブジェクトでユーザーまたはグループのかわりにアクションを実行する権限が必要です。
(オプション)データ・フロー・ユーザーにプライベート・エンドポイントの作成、編集または変更を許可。
このポリシー・テンプレートは、virtual-network-familyの使用、より限定的なリソースへのアクセス、特定の操作へのアクセス、およびネットワーク構成の変更を許可します。

IAMポリシー・ビルダー・テンプレートを使用したポリシーの作成

IAMポリシー・ビルダー・テンプレートを使用して、データ・フローのポリシーを作成します。

IAMでアイデンティティ・ドメインを使用またはアイデンティティ・ドメインを使用してポリシー・ビルダーでテンプレートを使用し、次のステップに従ってコンソールを使用してポリシーを作成します:
  1. ナビゲーション・メニューで、「アイデンティティとセキュリティ」をクリックします。
  2. 「アイデンティティ」で、「ポリシー」をクリックします。
3.dataflow-service-level-policyの作成
  1. 「ポリシー」ページで、「ポリシーの作成」をクリックします。
  2. ポリシーに「名前」dataflow-service-level-policyを指定します。
  3. (オプション)ポリシーの検索に役立つ説明を入力します。機密情報を含めないでください。
  4. テナンシのルートにあるコンパートメントを選択します。
  5. 「ポリシーのユースケース」で、Data Flowを選択します。
  6. 「共通ポリシー・テンプレート」から、Allow Data Flow service to perform common actions on behalf of usersを選択します。
    図1. ユーザー・テンプレートのかわりに、データ・フロー・サービスが共通アクションの実行を許可
    ユーザーのかわりにデータ・フロー・サービスが共通アクションを実行することを許可するポリシーが選択され、そのポリシー・ステートメントが表示されます。
  7. 「作成」をクリックします。
4.dataflow-admins-policyの作成
  1. 「ポリシー」ページで、「ポリシーの作成」をクリックします。
  2. ポリシーに「名前」dataflow-admins-policyを指定します。
  3. (オプション)ポリシーの検索に役立つ説明を入力します。機密情報を含めないでください。
  4. テナントのルートにあるコンパートメントを選択します。
  5. 「ポリシーのユースケース」で、Data Flowを選択します。
  6. 「共通ポリシー・テンプレート」から、Let dataflow-admins perform common admin operations related to Data Flow serviceを選択します。
    図2. データ・フロー・サービス・テンプレートに関連する共通管理操作の実行をデータ・フロー・サービスに許可
    データ・フロー・サービスに関連する共通管理操作をdataflow-adminsが実行するポリシーが選択され、そのポリシー・ステートメントが表示されます。
  7. 「作成」をクリックします。
5.dataflow-data-engineers-policyの作成
  1. 「ポリシー」ページで、「ポリシーの作成」をクリックします。
  2. ポリシーに「名前」dataflow-data-engineers-policyを指定します。
  3. (オプション)ポリシーの検索に役立つ説明を入力します。機密情報を含めないでください。
  4. 「コンパートメント」で、dataflow-compartmentを選択します。
  5. 「ポリシーのユースケース」で、Data Flowを選択します。
  6. 「共通ポリシー・テンプレート」から、Let dataflow-data-engineers perform common data engineering operations using Data Flow serviceを選択します。
    図3. dataflow-data-engineersにデータ・フロー・サービス・テンプレートを使用した共通データ・エンジニアリング操作の実行を許可
    ポリシーLet dataflow-data-engineersは、データ・フロー・サービスを使用して共通データ・エンジニアリング操作を実行し、そのポリシー・ステートメントを表示します。
  7. 「Groups」をクリックします。
  8. グループのリストから、dataflow-data-engineersを選択します。
  9. 「場所」から、dataflow-compartmentを選択します。
  10. 「作成」をクリックします。
6.dataflow-sql-users-policyの作成
  1. 「ポリシー」ページで、「ポリシーの作成」をクリックします。
  2. ポリシーに「名前」dataflow-sql-users-policyを指定します。
  3. (オプション)ポリシーの検索に役立つ説明を入力します。機密情報を含めないでください。
  4. 「コンパートメント」で、dataflow-compartmentを選択します。
  5. 「ポリシーのユースケース」で、Data Flowを選択します。
  6. 「共通ポリシー・テンプレート」から、Let dataflow-sql-users read and connect to Data Flow Interactive SQL clusters via JDBC or ODBCを選択します。
    図4. dataflow-SQL-usersがJDBCまたはODBCテンプレートを介してデータ・フロー対話型SQLクラスタを読み取り、データ・フロー対話型SQLクラスタに接続
    「Use dataflow-sql-users read and connect to Data Flow Interactive SQL cluster via JDBC or ODBC」ポリシーが選択され、そのポリシー・ステートメントが表示されます。
  7. 「Groups」をクリックします。
  8. グループのリストから、dataflow-sql-usersを選択します。
  9. 「場所」から、dataflow-compartmentを選択します。
  10. 「作成」をクリックします。

ポリシーの手動作成

IAMのテンプレートを使用してデータ・フローのポリシーを作成するかわりに、IAMのポリシー・ビルダーでポリシーを作成できます。

アイデンティティ・ドメインを使用またはアイデンティティ・ドメインを使用しないIAMのポリシーの管理のステップに従って、次のポリシーを手動で作成します:

データ・フロー・ユーザー・ポリシー
一般的に、データ・フロー・ユーザーを、権限が明確に分かれる2つのグループに分類します:
  • サービスで任意のアクションを実行できるサービスの管理者のようなユーザー(またはスーパー・ユーザー)向け。これには、グループに割り当てられたポリシーに従って、他のユーザーが所有するアプリケーションおよびテナンシ内のユーザーによって開始された実行の管理が含まれます:
    • アイデンティティ・サービスdataflow-adminにグループを作成し、このグループにユーザーを追加します。
    • dataflow-adminというポリシーを作成し、次のステートメントを追加します:
      ALLOW GROUP dataflow-admin TO READ buckets IN <TENANCY>
      ALLOW GROUP dataflow-admin TO MANAGE dataflow-family IN <TENANCY>
      ALLOW GROUP dataflow-admin TO MANAGE objects IN <TENANCY> WHERE ALL
                {target.bucket.name='dataflow-logs', any {request.permission='OBJECT_CREATE',
                request.permission='OBJECT_INSPECT'}}
    これには、dataflow-logsバケットへのアクセスが含まれます。
  • 2つ目のカテゴリは、自身のアプリケーションを作成および削除する権限のみを持っている他のすべてのユーザーが対象です。ただし、テナンシ内のアプリケーションは実行でき、他のユーザーが所有するアプリケーションの削除や他のユーザーが開始した実行の取消しなどの管理権限は持ちません。
    • アイデンティティ・サービスdataflow-usersにグループを作成し、このグループにユーザーを追加します。
    • dataflow-usersというポリシーを作成し、次のステートメントを追加します:
      ALLOW GROUP dataflow-users TO READ buckets IN <TENANCY>
      ALLOW GROUP dataflow-users TO USE dataflow-family IN <TENANCY>
      ALLOW GROUP dataflow-users TO MANAGE dataflow-family IN <TENANCY> WHERE ANY 
      {request.user.id = target.user.id, request.permission = 'DATAFLOW_APPLICATION_CREATE', 
      request.permission = 'DATAFLOW_RUN_CREATE'}
      ALLOW GROUP dataflow-users TO MANAGE objects IN <TENANCY> WHERE ALL 
      {target.bucket.name='dataflow-logs', any {request.permission='OBJECT_CREATE', 
      request.permission='OBJECT_INSPECT'}}
Oracle Cloud Infrastructure Loggingポリシー

これらのポリシーにより、データ・フローでOracle Cloud Infrastructure Loggingを使用できるようになります。

サービス・ログを有効にするには、ログ・グループに対する管理アクセス権とリソースへのアクセス権をユーザーに付与する必要があります。ログおよびログ・グループでは、log-groupリソース・タイプが使用されますが、ログの内容を検索するには、log-contentリソース・タイプを使用する必要があります。次のポリシーを追加します:
allow group dataflow-users to manage log-groups in compartment <compartment_name>
allow group dataflow-users to manage log-content in compartment <compartment_name>

Sparkストリーミングのポリシーの設定

データ・フローでSparkストリーミングを使用するには、共通ポリシー以上のものが必要です。

IAMポリシー・ビルダー・テンプレートまたは手動を使用して、共通ポリシーを作成しておく必要があります。

IAMポリシー・ビルダーを使用して、ソースへのアクセスを管理し、ストリーミング・アプリケーションが消費または生成先とするシンクを管理できます。たとえば、特定のストリーム・プールや、選択した場所にある特定のObject Storageバケットなどです。または、次のステップに従ってポリシーを手動で作成できます:

  1. テナンシのルートにdataflow-streaming-policyというポリシーを作成します。
  2. 次の文を追加して、dataflow-compartmentコンパートメントからのデータ・フロー実行が特定のストリーム・プールを消費または生成できるようにします。ストリーム・プールのIDはstream-pool-ocid1で、オブジェクト・ストレージ・バケットはstream-bucket-1です。
    ALLOW ANY-USER TO {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} IN TENANCY WHERE ALL
    {request.principal.type='dataflowrun', request.resource.compartment.id = '<compartment_id>', target.streampool.id = 'stream-pool-ocid1'}
    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>'}