Dataproc の Ranger オプション コンポーネント

Dataproc クラスタを作成する際には、オプション コンポーネント機能を使用して、Ranger などの追加コンポーネントをインストールできます。このページでは、Ranger コンポーネントについて説明します。

Apache Ranger コンポーネントは、Hadoop エコシステムの権限と監査を管理するためのオープンソース フレームワークです。Ranger 管理サーバーとウェブ UI は、クラスタの最初のマスターノードのポート 6080 で利用できます。

以下もご覧ください。

コンポーネントをインストールする

Dataproc クラスタの作成時にコンポーネントをインストールします。 Dataproc バージョン 1.3 以降で作成されたクラスタには、コンポーネントを追加できます。Ranger コンポーネントには、次に示すように、Solr コンポーネントをインストールする必要があります。

Dataproc イメージの各リリースに含まれるコンポーネント バージョンについては、サポートされる Dataproc バージョンをご覧ください。

インストール手順

  1. Ranger 管理パスワードの設定

    1. クラスタのサービス アカウントCloud KMS 暗号鍵の暗号化 / 復号のロールを付与します。デフォルトでは、クラスタ サービス アカウントは Compute Engine のデフォルトのサービス アカウントとして設定されます。このアカウントは次の形式になっています。
      project-number-compute@developer.gserviceaccount.com
      
      以下に示すように、クラスタの作成時に別のクラスタ サービス アカウントを指定できます。
      1. 例: Compute Engine 暗号鍵の暗号化/復号のロールを Compute Engine のデフォルト サービス アカウントに付与します。
        gcloud projects add-iam-policy-binding project-id \
            --member=serviceAccount:project-number-compute@developer.gserviceaccount.com \
            --role=roles/cloudkms.cryptoKeyDecrypter
        
    2. 鍵管理サービス(KMS)の鍵を使用して、Ranger 管理ユーザーのパスワードを暗号化します。 2.2 より前のイメージ バージョン クラスタでは、パスワードは 8 文字以上で、少なくとも英字 1 文字と数字 1 文字が含まれている必要があります。2.2 以降のイメージ バージョンのクラスタでは、パスワードは 8 文字以上で、少なくとも 1 つの英大文字、英小文字、数字が含まれている必要があります。
      1. :
        1. キーリングを作成します。
          gcloud kms keyrings create my-keyring --location=global
          
        2. キーを作成します。
          gcloud kms keys create my-key \
              --location=global \
              --keyring=my-keyring \
              --purpose=encryption
          
        3. Ranger 管理ユーザーのパスワードを暗号化します。
          echo 'my-ranger-admin-password' | \
            gcloud kms encrypt \
              --location=global \
              --keyring=my-keyring \
              --key=my-key \
              --plaintext-file=- \
              --ciphertext-file=admin-password.encrypted
          
    3. 暗号化したパスワードをプロジェクトの Cloud Storage バケットにアップロードします。
      1. :
        gcloud storage cp admin-password.encrypted gs://my-bucket
        
  2. クラスタの作成

    1. Ranger コンポーネントをインストールするときは、次に示すように、Solr コンポーネントもインストールする必要があります。
      1. Ranger コンポーネントは、Solr コンポーネントに依存して、監査ログを格納し、クエリを実行します。デフォルトでは、HDFS がストレージとして使用されます。クラスタが削除されると、この HDFS データが削除されます。Cloud Storage に Ranger 監査ログなどのデータを格納する Solr コンポーネントを構成するには、クラスタの作成時に dataproc:solr.gcs.path=gs://<bucket> クラスタ プロパティを使用します。クラスタが削除されても、Cloud Storage のデータは維持されます。
    2. dataproc:ranger.kms.key.uridataproc:ranger.admin.password.uriクラスタ プロパティを設定して、KMS の鍵とパスワードの Cloud Storage URI をクラスタ作成コマンドに渡します。
    3. 必要に応じて、dataproc:ranger.db.admin.password.uri クラスタ プロパティを設定し、暗号化された Cloud Storage ファイル URI を介して、Ranger データベースの管理者ユーザー パスワードを渡すことができます。
    4. デフォルトでは、Ranger コンポーネントは、クラスタの最初のマスターノードで実行されている MySQL データベース インスタンスを使用します。MySQL インスタンスで、変数を ON に設定して log_bin_trust_function_creators フラグを有効にします。このフラグを設定して、ストアド ファンクションの作成者を信頼できるかどうかを制御します。クラスタの作成と Ranger の構成が完了したら、log_bin_trust_function_creatorsOFF にリセットできます。
    5. クラスタを削除した後に Ranger データベースを保持するには、Cloud SQL インスタンスを外部 MySQL データベースとして使用します。

      1. dataproc:ranger.cloud-sql.instance.connection.name クラスタ プロパティを Cloud SQL インスタンスに設定します。
      2. dataproc:ranger.cloud-sql.root.password.uri クラスタ プロパティを、Cloud SQL インスタンスの KMS 鍵暗号化 root パスワードの Cloud Storage URI に設定します。
      3. Cloud SQL インスタンスへの接続がプライベート IP 経由かどうかを示すため、dataproc:ranger.cloud-sql.use-private-ip クラスタ プロパティを設定します。

      Ranger コンポーネントは、Cloud SQL Proxyを使用して Cloud SQL インスタンスに接続します。プロキシを使用するには、次のようにします。

      1. クラスタの作成時に sqlservice.admin API スコープを設定します(OAuth 2.0 を使用したリクエストの承認をご覧ください)。gcloud dataproc cluster create コマンドを使用する場合は、--scopes=default,sql-admin パラメータを追加します。
      2. プロジェクトで SQL Admin API を有効にします。
      3. クラスタ サービス アカウントに Cloud SQL 編集者のロールがあることを確認します。

      gcloud コマンド

      Ranger コンポーネントを含む Dataproc クラスタを作成するには、--optional-components フラグを指定した gcloud dataproc clusters create cluster-name コマンドを使用します。

      gcloud dataproc clusters create cluster-name \
          --optional-components=SOLR,RANGER \
          --region=region \
          --enable-component-gateway \
          --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key,dataproc:ranger.admin.password.uri=gs://my-bucket/admin-password.encrypted" \
          ... other flags
      

      REST API

      Dataproc API の clusters.create リクエストの一部として、SoftwareConfig.Component フィールドに Ranger コンポーネントと Solr コンポーネントを指定します。また、次のクラスタ プロパティSoftwareConfig.Component.properties フィールドに設定する必要があります。

      1. dataproc:ranger.kms.key.uri: 「projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key
      2. dataproc:ranger.admin.password.uri: 「gs://my-bucket/admin-password.encrypted」

      Console

      1. コンポーネントとコンポーネント ゲートウェイを有効にします。
        • Google Cloud コンソールで、Dataproc の [クラスタの作成] ページを開きます。[クラスターを設定] パネルが選択されています。
        • [コンポーネント] セクションで次の設定を行います。
          • [オプション コンポーネント] で、クラスタにインストールする Ranger や Solr、他のオプション コンポーネントを選択します。
          • [コンポーネント ゲートウェイ] で [コンポーネント ゲートウェイを有効にする] を選択します(コンポーネント ゲートウェイの URL を表示してアクセスするをご覧ください)。

[ウェブ インターフェース] タブをクリックします。コンポーネント ゲートウェイで [Ranger] をクリックし、Ranger ウェブ インターフェースを開きます。Ranger 管理者のユーザー名(admin など)とパスワードでログインします。

Ranger 管理ログ

Ranger 管理ログは、ranger-admin-root ログとして Logging で確認できます。