Secret Manager 認証情報プロバイダ

このドキュメントでは、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...

次のように置き換えます。