これはなに?
先日開催されたHashicorp社主催のHashiDayにて発表された「HCP Vault Secrets」を使ってみました!
2023/6/14時点ではPubliic Betaとして提供されています。
HPC Vaultとの違いは?
HCP Vaultとの違いとして、
HCP Vault Secretsはよりシークレット管理に焦点を当てた点が大きな違いのようです。
HCP Vault Secrets は、HashiCorp Vault の新しい Software-as-a-Service (SaaS) 製品であり、主にシークレット管理に焦点を当てており、ユーザーはすぐにオンボードでき、無料で開始できます。
使ってみる
大きく分けてHCPコンソール画面を使用した操作とCLIでの使用方法があります。
HCPコンソールについてはWebからアクセスすることができ、CLIについてはVault Secrets CLIのvltコマンドをインストールすることで使用できます。
vltコマンドは以下の手順にてインストール可能です。
$ brew tap hashicorp/tap
$ brew install vlt
$ vlt --version
ログイン
HCPにログインしてみると、今回新たに追加されたVault Secretsが追加されている。
https://developer.hashicorp.com/
コマンド
$ export HCP_CLIENT_ID="<Client ID>"
$ export HCP_CLIENT_SECRET="<Client Secret>"
$ vlt login
Application作成
Applicationという単位での作成を行います。
リリースページに記載されていたこちらの画像のAppに該当するものになります。
コマンド
$ vlt apps create --description="This is Sample Web Applation." sample-webapp
Secret
登録
Key-Valueでのシークレット情報登録を行うことができ、AWSのSecretsManagerと同様の機能になります。
コンソールもしくはCLIにて登録を行うことが可能となります。
コマンド
$ vlt secrets create --app-name="sample-webapp" apikey="hogehoge_hoge_xxxx"
取得
コマンド
マスキングされた形での取得は以下のコマンドを実行。
$ vlt secrets get --app-name="sample-webapp" apikey
平文でのシークレット情報を取得する場合には--plaintext
を指定する。
$ vlt secrets get --app-name="sample-webapp" --plaintext apikey
AWS Secrets Manager Integration
概要
AWSアカウントとのインテグレーション設定を行うことで、HPC Vault Secretsに登録されたシークレット情報をSecrets Managerへ同期できる機能となります。
以下の公式ドキュメントに記載の手順が分かりやすく記載されているため、気になる方はチェックしてみると良いかもしれません。
https://developer.hashicorp.com/hcp/docs/vault-secrets/integrations/aws-secrets-manager
インテグレーション設定
左のメニューからコンソールから「Integration」を選択します。
一意な名前を入力し、インテグレーションに使用するRole ARNの入力、インテグレーション先のリージョンを選択します。インテグレーションに使用するRoleの作成手順は後述の手順に記載します。
インテグレーション可能なリージョンは現在以下の3つのみとなります。
インテグレーション用IAMロール設定
以下のポリシーを付与したIAMロールをインテグレーションするAWS環境に作成します。
AWS_EXTERNAL_ID
についてはHCPコンソールに表示のものを使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "HCPVaultSecretsAccess",
"Effect": "Allow",
"Action": [
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue",
"secretsmanager:CreateSecret",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecret",
"secretsmanager:UpdateSecretVersionStage",
"secretsmanager:DeleteSecret",
"secretsmanager:RestoreSecret",
"secretsmanager:TagResource",
"secretsmanager:UntagResource"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::879554817125:role/HCPVaultSecrets_Sync"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<HPCコンソールに記載のAWS_EXTERNAL_ID>"
}
}
}
]
}
動作確認
作成が完了し、Integrationが成功するとStatusがSyncedになります。
エラーが表示されている場合はIAMロールの設定に問題がある可能性があるので、見直してみると良いかもしれません。
AWSコンソール上で確認してみるとHCP Vault Secretsに登録したシークレットが自動的に作成されていました!
まとめ
- HCP Vaultに比べ、よりアプリケーションが使用するシークレットという部分に焦点が当てられていると感じました。
- HCP Vaultでは動的なシークレット発行などが行えるので、HCP Vault Secretsでも今後実装されるのかな?など使用しながら色々考えてましたw
- Terraformとの連携も容易そうでしたので、そちらも別の記事で作成していきたいと思います。
- Puclic Betaでまだまだこれから機能が増えていきそうな、予感がするのでとても楽しみにしています!