4
4

More than 1 year has passed since last update.

[Public Beta]HCP Vault Secrets使ってみた

Posted at

これはなに?

先日開催された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コマンドは以下の手順にてインストール可能です。

インストール手順.sh
$ brew tap hashicorp/tap
$ brew install vlt
$ vlt --version

ログイン

HCPにログインしてみると、今回新たに追加されたVault Secretsが追加されている。
https://developer.hashicorp.com/

image.png

コマンド

ログイン.sh
$ export HCP_CLIENT_ID="<Client ID>"
$ export HCP_CLIENT_SECRET="<Client Secret>"
$ vlt login

Application作成

Applicationという単位での作成を行います。
リリースページに記載されていたこちらの画像のAppに該当するものになります。
image.png

Application名を入力し、作成を行います。
image.png

コマンド

$ vlt apps create --description="This is Sample Web Applation." sample-webapp

Secret

登録

Key-Valueでのシークレット情報登録を行うことができ、AWSのSecretsManagerと同様の機能になります。
コンソールもしくはCLIにて登録を行うことが可能となります。
image.png

コマンド
$ 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」を選択します。
image.png

一意な名前を入力し、インテグレーションに使用するRole ARNの入力、インテグレーション先のリージョンを選択します。インテグレーションに使用するRoleの作成手順は後述の手順に記載します。

インテグレーション可能なリージョンは現在以下の3つのみとなります。

  • us-west-2
  • us-east-1
  • us-east-2
    image.png
インテグレーション用IAMロール設定

以下のポリシーを付与したIAMロールをインテグレーションするAWS環境に作成します。
AWS_EXTERNAL_IDについてはHCPコンソールに表示のものを使用します。

IAMポリシー.
{
   "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": "*"
      }
   ]
}
IAMロールに付与する信頼ポリシー.
{
    "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ロールの設定に問題がある可能性があるので、見直してみると良いかもしれません。
image.png

AWSコンソール上で確認してみるとHCP Vault Secretsに登録したシークレットが自動的に作成されていました!
image.png

まとめ

  • HCP Vaultに比べ、よりアプリケーションが使用するシークレットという部分に焦点が当てられていると感じました。
    • HCP Vaultでは動的なシークレット発行などが行えるので、HCP Vault Secretsでも今後実装されるのかな?など使用しながら色々考えてましたw
  • Terraformとの連携も容易そうでしたので、そちらも別の記事で作成していきたいと思います。
  • Puclic Betaでまだまだこれから機能が増えていきそうな、予感がするのでとても楽しみにしています!
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4