【入門編】Pulumi ESC(Environments, Secrets, and Configurations)完全ガイド:次世代シークレット・設定管理の全貌 – インフラ構成管理(IaC)活用バイブル

こんにちは!クラウドインフラの世界へようこそ。
日々、膨大な環境変数やシークレット(APIキーやパスワード)の管理に頭を悩ませていませんか?「ステージングと本番で設定が微妙に違う」「誰がどの権限を持っているのか分からない」「`.env`ファイルがローカルに散乱している……」——SREやインフラエンジニアなら誰もが一度は通る地獄ですよね。

今回は、そんなシークレットと設定地獄から私たちを救い出してくれる、Pulumiの最新機能「Pulumi ESC(Environments, Secrets, and Configurations)」について徹底解説します。

これをマスターすれば、マルチクラウド環境の設定管理や動的なシークレット取得が驚くほどエレガントになり、毎日のインフラ作業が劇的に楽になりますよ。さあ、一緒に次世代の構成管理の世界へ足を踏み入れましょう!

—

1. Pulumi ESCとは何か?(ツールの役割)

一言で言うと、「あらゆる環境変数、設定ファイル、そして動的シークレットを階層的に管理し、安全に配布するための次世代オーケストレーター」です。

従来のツール(AWS Secrets Manager、HashiCorp Vault、あるいは単なるdotenvファイルなど)には、「設定の継承が難しい」「静的なシークレットのローテーションが面倒」「複数のクラウドプロバイダー(AWS, GCP, Azure)をまたいだ認証情報の動的生成が複雑」という課題がありました。

ESCは、これらを「YAMLによる宣言的な環境定義」として統合します。さらに、AWSのIAM一時クレデンシャルやOIDC(OpenID Connect)と動的に連携し、「持続的な静的シークレットを一切持たない(セートレス・シークレット)」世界を実現します。

—

2. 導入と基礎セットアップ

それでは、手元の環境でESCを使えるようにセットアップしていきましょう。非常にシンプルです。

前提条件

  • Pulumi CLI がインストールされていること(`v3.100.0` 以降推奨)
  • Pulumi Cloud のアカウントを持っていること(無料枠で試せます)

ステップ1: Pulumi CLIのログインと最新化

まずはCLIが最新であることを確認し、Pulumi Cloudにログインします。

Pulumi CLIのアップデート
pulumi login

ログイン状態の確認
pulumi whoami

ステップ2: ESC CLIの基本操作

Pulumi ESCは、Pulumi CLIに統合されています。特別なプラグインを入れなくても、`pulumi env` コマンドを通じて操作可能です。

ESC環境の操作ヘルプを確認
pulumi env –help

準備はこれだけです!拍子抜けするほど簡単ですね。

—

3. HelloWorld:はじめてのESC環境構築

百聞は一見に如かず。実際にESCの環境(Environment)を作成し、設定とシークレットを定義してみましょう。

環境定義ファイル(YAML)の作成

Pulumi ESCでは、環境をYAMLファイルで定義します。今回は `development.yaml` というファイルを作成してみましょう。

開発環境用の基本設定とシークレットを定義するESC環境
values:
# 静的な環境変数や設定値
environment: “development”
project: “saas-app”

# 通常の設定値の階層構造
aws:
region: “ap-northeast-1”
vpc_cidr: “10.0.0.0/16”

# 暗号化されたシークレット(Pulumi ESCが安全に暗号化)
secret:
api_key: “sk-live-super-secret-12345”

ESCへの環境のインポート(登録)

作成したYAMLファイルを、Pulumi Cloud上のESCに登録(オープン)します。組織名(または個人のユーザー名)を適宜読み替えてください。

my-org 組織内に “dev-env” という名前で環境を作成・登録
pulumi env init my-org/dev-env
pulumi env set my-org/dev-env –file development.yaml

これだけで、クラウド上に安全な設定ストアが構築されました!

動作確認:設定のプレビューと取得

登録した環境から、設定やシークレットを安全に取り出してみましょう。

環境の値を確認(シークレットは自動的にマスクされます)
pulumi env open my-org/dev-env

特定の値だけを抽出して標準出力に出力(シークレットを復号)
pulumi env open my-org/dev-env –show-secrets

見事に設定とシークレットが統合されて取得できましたね。これがESCの基本の形です。

—

4. 応用編:継承(Inheritance)と外部IDP連携の威力

ESCの真骨頂はここからです。「ベースとなる共通設定」を作り、そこから「環境ごとの差分(オーバーライド)」を美しく継承させることができます。

設定の継承(Base & Override)

例えば、全環境共通の `base-env` を作り、それを `development` や `production` で継承させてみましょう。

my-org/production-env.yaml
values:
# 共通のベース環境をインポート(継承)

  • fn::import: my-org/base-env

# 本番環境用に値をオーバーライド
environment: “production”

aws:
region: “us-east-1” # 本番だけリージョンを変える
vpc_cidr: “10.100.0.0/16”

# 本番用の強固なシークレットに差し替え
secret:
api_key: “sk-production-ultra-secure-99999”

このように、DRY(Don’t Repeat Yourself)な思想で設定を管理できるため、環境間の設定ドリフト(意図しない差異)を完全に防ぐことができます。

動的プロバイダー連携(AWS OIDCの例)

「AWSの長期的なアクセスキー(`AWS_ACCESS_KEY_ID` など)をコードやリポジトリに保存したくない」——SREの永遠の願いです。ESCを使えば、AWS IAMとOIDC連携し、実行時(Just-in-Time)に一時的なAWSクレデンシャルを動的に生成できます。

values:
# AWSプロバイダーを通じた動的なIAMロールの引き受け
aws:
fn::open::aws-login:
with:
oidc:
aud: “https://pulumi.com/organizations/my-org”
roleArn: “arn:aws:iam::123456789012:role/PulumiEscDeploymentRole”
sessionName: “pulumi-esc-session”

# これにより、以降のステップで自動的に一時クレデンシャルが利用可能になる
environment: “secure-production”

静的なシークレットを一切持たない、完全なゼロ・スタンド・シークレット(Zero-standing-privilege)のアーキテクチャが、わず数行のYAMLで実現できてしまうのです。

—

まとめ

今回は、Pulumi ESCの基本概念から、インストール、環境の作成、そして設定の継承や動的シークレットの思想までを駆け足で解説しました。

  • Pulumi ESCとは:設定、環境変数、シークレットを階層的に管理し、動的に配布する次世代オーケストレーター。
  • 最大のメリット:YAMLによる美しい継承・オーバーライドと、長期シークレットを排除するセキュアな動的プロバイダー連携。

これをマスターすれば、環境ごとの設定ミスの恐怖から解放され、より本質的なインフラ設計に集中できるようになります。毎日の開発・運用作業が、確実に一段階スマートになりますよ。

次回の記事では、このESCを実際のPulumi IaCプログラム(TypeScriptやGoなど)と組み合わせて、CI/CDパイプライン(GitHub Actionsなど)からシームレスに呼び出す実践的なワークフローを解説します。

お楽しみに!

タイトルとURLをコピーしました