Dataproc サービス アカウント ベースの安全なマルチテナンシー(以下、「安全なマルチ テナンシー」と呼びます)を使用すると、クラスタの作成時に複数のユーザーとサービス アカウントにマッピングされたユーザのセットが含まれるクラスタを共有できます。安全なマルチテナンシーを使用すると、ユーザーはインタラクティブなワークロードを独立したユーザー ID でクラスタに送信できます。
ユーザーがクラスタにジョブを送信すると、ジョブは次を行います。
特定の Kerberos プリンシパルを持つ特定の OS ユーザーとして実行される
マッピングされたサービス アカウントの認証情報を使用して Google Cloud リソースにアクセス
考慮事項と制限事項
安全なマルチテナンシーを有効にしてクラスタを作成する場合:
ジョブは、Dataproc Jobs API を介してのみ送信できます。
このクラスタは、マッピングされたサービス アカウントを持つユーザーのみが使用できます。たとえば、マッピングされていないユーザーはクラスタでジョブを実行できません。
サービス アカウントは Google ユーザーにのみマッピングでき、Google グループにはマッピングできません。
Dataproc のコンポーネント ゲートウェイが有効になっていません。
クラスタ VM 上で起動スクリプトを実行するなど、クラスタと Compute Engine の機能への直接的な SSH アクセスはブロックされます。また、
sudo
権限を使用してジョブを実行することはできません。安全なクラスタ内通信を行えるように、Kerberos が有効になっており、クラスタで構成されています。 Kerberos によるエンドユーザー認証はサポートされていません。
Dataproc Workflows はサポートされていません。
安全なマルチテナンシー クラスタを作成する
Dataproc の安全なマルチテナンシー クラスタを作成するには、--secure-multi-tenancy-user-mapping
フラグを使用して、ユーザーからサービス アカウントへのマッピングのリストを指定します。
例:
次のコマンドでは、ユーザー bob@my-company.com
をサービス アカウント service-account-for-bob@iam.gserviceaccount.com
にマッピングし、ユーザー alice@my-company.com
をサービス アカウント service-account-for-alice@iam.gserviceaccount.com
にマッピングしてクラスタを作成します。
gcloud dataproc clusters create my-cluster \ --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
または、ユーザーとサービス アカウントのマッピングのリストをローカルまたは Cloud Storage の YAML または JSON ファイルに保存することもできます。--identity-config-file
フラグを使用して、ファイルの場所を指定します。
ID 構成ファイルの例:
user_service_account_mapping: bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com
--identity-config-file
フラグを使用してクラスタを作成するコマンドの例:
gcloud dataproc clusters create my-cluster \ --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
注:
上記のコマンドに示されているように、クラスタ
--scopes
には少なくともhttps://www.googleapis.com/auth/iam
が含まれている必要があります。これは、クラスタ サービス アカウントが権限借用を実行するために必要なものです。クラスタ サービス アカウントには、ユーザーにマッピングされたサービス アカウントに成り代わる権限が必要です(サービス アカウントの権限をご覧ください)。
推奨事項: クラスタごとに異なるクラスタ サービス アカウントを使用して、各クラスタ サービス アカウントで、マッピングされたユーザー サービス アカウントの限定された目的のグループのみが権限借用できるようにします。