このドキュメントでは、Secret Manager を Google Cloud Serverless for Apache Spark の認証情報ストアとして使用し、サーバーレス ワークロードで処理されるセンシティブ データを安全に保存してアクセスする方法について説明します。
概要
Secret Manager は、API キー、パスワード、証明書などのセンシティブ データを保護します。これを使用して、Google Cloud全体で Secret の管理、アクセス、監査を行えます。
Apache Spark 用 Serverless バッチ ワークロードを実行するときに、Dataproc Secret Manager 認証情報プロバイダを使用して、Secret Manager のシークレットを使用するように構成できます。
対象
この機能は、Serverless for Apache Spark ランタイム バージョン 1.2.29 以降、2.2.29 以降、またはそれ以降の主要なランタイム バージョンで使用できます。
用語
次の表に、このドキュメントで使用されている用語を示します。
用語 | 説明 |
---|---|
Secret |
Secret Manager の Secret は、メタデータと Secret バージョンのコレクションを含むグローバル プロジェクト オブジェクトです。これにより、Secret をバイナリ blob またはテキスト文字列として保存、管理し、その Secret にアクセスできます。 |
Credential |
Hadoop やその他の Dataproc ワークロードでは、認証情報は認証情報名(ID)と認証情報値(パスワード)で構成されます。認証情報 ID と値は、Secret Manager の Secret ID と Secret 値(Secret バージョン)にマッピングされます。 |
権限
Dataproc は、次のオプションの Secret が存在するかどうかを確認します。
- fs-gs-encryption-key
- fs-gs-encryption-key-hash
- fs-gs-proxy-password
- fs-gs-proxy-username
Dataproc VM サービス アカウントに fs-gs
シークレットを確認する権限があることを確認するには、次の条件で Secret Manager のシークレット アクセサー ロールをサービス アカウントに追加します。
{ "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")", "title": "gsmkeycondition", "description": "Permission to access Dataproc secrets" }
用途
Apache Spark 向け Serverless ワークロードを送信するときに次のプロパティを設定して、Secret Manager と連携するようにサポートされている Hadoop などの OSS コンポーネントを構成できます。
プロバイダパス(必須): プロバイダパス プロパティ
spark.hadoop.hadoop.security.credential.provider.path
は、認証情報を解決するために走査される 1 つ以上の認証情報プロバイダ URI のカンマ区切りのリストです。--properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
- プロバイダパスの
scheme
は、認証情報プロバイダのタイプを示します。Hadoop スキームには、jceks://
、user://
、localjceks://
があります。gsm://
スキームを使用して、Secret Manager で認証情報を検索します。
- プロバイダパスの
ドット演算子を置き換える : Secret Manager サービスでは、Secret 名にドット(
.
)を使用できません。ただし、一部のオープンソース ソフトウェア(OSS)コンポーネントでは、認証情報キーにドットを使用しています。この制限を解消するには、このプロパティを有効にして、認証情報名のドット(.
)をハイフン(-
)に置き換えます。これにより、名前にドットを含む OSS 認証情報を Secret Manager から正しく保存および取得できます。たとえば、OSS 認証情報キーが
a.b.c
の場合は、Secret Manager に保存するときにa-b-c
に変更する必要があります。--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
このプロパティは省略可能です。デフォルトでは、値は
false
です。認証情報名にドット(.
)演算子がない認証情報キーの場合、このプロパティは無視しても問題ありません。Secret のバージョン : Secret Manager の Secret には複数のバージョン(値)を設定できます。このプロパティを使用して、本番環境で安定したアクセスのために特定の Secret バージョンにアクセスします。
--properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
このプロパティは省略可能です。デフォルトでは、Secret Manager は
LATEST
バージョンにアクセスします。これは、ランタイムで Secret の最新の値に解決されます。ユースケースで常に Secret のLATEST
バージョンにアクセスする場合は、このプロパティを無視しても問題ありません。
Secret Manager 認証情報プロバイダを使用してバッチ ワークロードを実行する
Secret Manager 認証情報プロバイダを使用するバッチ ワークロードを送信するには、次のコマンドをローカルまたは Cloud Shell で実行します。
gcloud dataproc batches submit spark \ --region=REGION \ --jars=JARS \ --class=MAIN_CLASS \ --properties="spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \ ...other flags as needed...
次のように置き換えます。
- REGION: ワークロードが実行される Compute Engine リージョン
- JARS: ワークロード jar のパス
- MAIN_CLASS: Jar のメインクラス
- PROJECT_ID: プロジェクト ID。Google Cloud コンソール ダッシュボードの [プロジェクト情報] セクションに表示されます。