Dataproc クラスタを作成する際には、オプション コンポーネント機能を使用して、Ranger などの追加コンポーネントをインストールできます。このページでは、Ranger コンポーネントについて説明します。
Apache Ranger コンポーネントは、Hadoop エコシステムの権限と監査を管理するためのオープンソース フレームワークです。Ranger 管理サーバーとウェブ UI は、クラスタの最初のマスターノードのポート 6080
で利用できます。
以下もご覧ください。
コンポーネントをインストールする
Dataproc クラスタの作成時にコンポーネントをインストールします。コンポーネントは、Dataproc バージョン 1.3 以降で作成されたクラスタに追加できます。Ranger コンポーネントには、次に示すように、Solr コンポーネントをインストールする必要があります。
Dataproc イメージの各リリースに含まれるコンポーネント バージョンについては、サポートされる Dataproc バージョンをご覧ください。
インストール手順:
Ranger 管理パスワードを設定します。
- クラスタのサービス アカウントに Cloud KMS CryptoKey の暗号化 / 復号のロールを付与します。デフォルトでは、クラスタ サービス アカウントは Compute Engine のデフォルトのサービス アカウントとして設定されます。このアカウントは次の形式になっています。
以下に示すように、クラスタの作成時に別のクラスタ サービス アカウントを指定できます。project-number-compute@developer.gserviceaccount.com
- 例: Cloud KMS CryptoKey の暗号化 / 復号のロールを Compute Engine のデフォルト サービス アカウントに付与します。
gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:project-number-compute@developer.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyDecrypter
- 例: Cloud KMS CryptoKey の暗号化 / 復号のロールを Compute Engine のデフォルト サービス アカウントに付与します。
- 鍵管理サービス(KMS)の鍵を使用して、Ranger 管理ユーザーのパスワードを暗号化します。2.2 より前のイメージ バージョンのクラスタでは、パスワードは 8 文字以上にして、少なくとも 1 つの英字と数字を含める必要があります。2.2 以降のイメージ バージョンのクラスタでは、パスワードは 8 文字以上にして、少なくとも 1 つの英大文字、英小文字、数字を含める必要があります。
- 例:
- キーリングを作成します。
gcloud kms keyrings create my-keyring --location=global
- 鍵を作成します。
gcloud kms keys create my-key \ --location=global \ --keyring=my-keyring \ --purpose=encryption
- Ranger 管理ユーザーのパスワードを暗号化します。
echo 'my-ranger-admin-password' | \ gcloud kms encrypt \ --location=global \ --keyring=my-keyring \ --key=my-key \ --plaintext-file=- \ --ciphertext-file=admin-password.encrypted
- キーリングを作成します。
- 例:
- 暗号化したパスワードをプロジェクトの Cloud Storage バケットにアップロードします。
- 例:
gcloud storage cp admin-password.encrypted gs://my-bucket
- 例:
- クラスタのサービス アカウントに Cloud KMS CryptoKey の暗号化 / 復号のロールを付与します。デフォルトでは、クラスタ サービス アカウントは Compute Engine のデフォルトのサービス アカウントとして設定されます。このアカウントは次の形式になっています。
クラスタを作成します。
- Ranger コンポーネントをインストールするときは、次に示すように、Solr コンポーネントもインストールする必要があります。
- Ranger コンポーネントは、Solr コンポーネントに依存して、監査ログを格納し、クエリを実行します。デフォルトでは、HDFS がストレージとして使用されます。クラスタが削除されると、この HDFS データが削除されます。Cloud Storage に Ranger 監査ログなどのデータを格納する Solr コンポーネントを構成するには、クラスタの作成時に
dataproc:solr.gcs.path=gs://<bucket>
クラスタ プロパティを使用します。クラスタが削除されても、Cloud Storage のデータは維持されます。
- Ranger コンポーネントは、Solr コンポーネントに依存して、監査ログを格納し、クエリを実行します。デフォルトでは、HDFS がストレージとして使用されます。クラスタが削除されると、この HDFS データが削除されます。Cloud Storage に Ranger 監査ログなどのデータを格納する Solr コンポーネントを構成するには、クラスタの作成時に
dataproc:ranger.kms.key.uri
とdataproc:ranger.admin.password.uri
のクラスタ プロパティを設定して、KMS の鍵とパスワードの Cloud Storage URI をクラスタ作成コマンドに渡します。- 必要に応じて、
dataproc:ranger.db.admin.password.uri
クラスタ プロパティを設定し、暗号化された Cloud Storage ファイル URI を介して、Ranger データベースの管理者ユーザー パスワードを渡すことができます。 - デフォルトでは、Ranger コンポーネントは、クラスタの最初のマスターノードで実行されている MySQL データベース インスタンスを使用します。MySQL インスタンスで、変数を
ON
に設定してlog_bin_trust_function_creators
フラグを有効にします。このフラグを設定して、ストアド ファンクションの作成者を信頼できるかどうかを制御します。クラスタの作成と Ranger の構成が完了したら、log_bin_trust_function_creators
をOFF
にリセットできます。 クラスタを削除した後に Ranger データベースを保持するには、Cloud SQL インスタンスを外部 MySQL データベースとして使用します。
dataproc:ranger.cloud-sql.instance.connection.name
クラスタ プロパティを Cloud SQL インスタンスに設定します。dataproc:ranger.cloud-sql.root.password.uri
クラスタ プロパティを、Cloud SQL インスタンスの KMS 鍵暗号化 root パスワードの Cloud Storage URI に設定します。- Cloud SQL インスタンスへの接続がプライベート IP 経由かどうかを示すため、
dataproc:ranger.cloud-sql.use-private-ip
クラスタ プロパティを設定します。
Ranger コンポーネントは、Cloud SQL Auth Proxyを使用して Cloud SQL インスタンスに接続します。プロキシを使用するには:
- クラスタの作成時に
sqlservice.admin
API スコープを設定します(OAuth 2.0 を使用したリクエストの承認をご覧ください)。gcloud dataproc cluster create
コマンドを使用する場合は、--scopes=default,sql-admin
パラメータを追加します。 - プロジェクトで SQL Admin API を有効にします。
- クラスタ サービス アカウントに Cloud SQL 編集者のロールがあることを確認します。
- マスターノードの Cloud SQL Auth Proxy はポート 3307 経由で Cloud SQL インスタンスへの下り(外向き)接続を作成するため、ポート 3307 経由でマスターノードから Cloud SQL インスタンスへの下り(外向き)TCP 接続が許可されていることを確認してください。詳細については、Cloud SQL Auth Proxy の仕組みをご覧ください。
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 フィールドに設定する必要があります。
dataproc:ranger.kms.key.uri
: projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-keydataproc:ranger.admin.password.uri
: gs://my-bucket/admin-password.encrypted
コンソール
- コンポーネントとコンポーネント ゲートウェイを有効にします。
- Google Cloud コンソールで、Dataproc の [クラスタの作成] ページを開きます。[クラスタの設定] パネルが選択されています。
- [コンポーネント] セクションで次の設定を行います。
- [オプション コンポーネント] で、クラスタにインストールする Ranger、Solr、他のオプション コンポーネントを選択します。
- [コンポーネント ゲートウェイ] で [コンポーネント ゲートウェイを有効にする] を選択します(コンポーネント ゲートウェイの URL を表示してアクセスするをご覧ください)。
- Ranger コンポーネントをインストールするときは、次に示すように、Solr コンポーネントもインストールする必要があります。
[ウェブ インターフェース] タブをクリックします。[コンポーネント ゲートウェイ] で [Ranger] をクリックし、Ranger ウェブ インターフェースを開きます。Ranger 管理者のユーザー名(admin など)とパスワードでログインします。
Ranger 管理ログ
Ranger 管理ログは、ranger-admin-root
ログとして Logging で確認できます。
