0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VaultでAWSシークレットを使う方法

Last updated at Posted at 2023-03-30

AWSシークレットエンジンは、IAM ポリシーに基づいて AWS の認証情報を動的に生成します。
AWS マネジメントコンソールを操作する必要がないため AWS IAM の運用が少しだけ容易になります。

参考文献はこちら

AWSシークレットエンジン

まずは現状確認

vault secrets list

AWS シークレットエンジンを有効に

vault secrets enable aws

-path をつけることでpathを指定できますが、今回は割愛

vault secrets list

Path          Type         Accessor              Description
----          ----         --------              -----------
aws/          aws          aws_hoge         n/a

AWS シークレットエンジンTTL設定変更


# TTL(Lease)をデフォルト768 時間 → 30分 に変更
vault write aws/config/lease lease=30m lease_max=30m

Key          Value
---          -----
lease        30m0s
lease_max    30m0s

Vault によって生成された AWS IAM の認証情報にはリース期間が設定され、その期間が経過すると自動的に失効します。

認証情報はいつでも管理者により取り消すことができます。

AWS シークレットエンジン認証情報設定

# 事前に環境変数は設定しておいてください
# (Vault起動時のrootTOKEN)
echo $VAULT_TOKEN
# (IAMのKEY情報)
echo $AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY

# AWS 認証情報を設定
vault write aws/config/root \
  access_key=$AWS_ACCESS_KEY_ID \
  secret_key=$AWS_SECRET_ACCESS_KEY \
  region=us-west-1

AWS接続用の Vault のroleの作成

Vaultでは任意のロールを作成し、AWS のパーミッションのセットと AWS のクレデンシャルタイプをそのロールにマッピングします。
クレデンシャルを生成する際は、事前に定義したroleに対してリクエストします。

今回の内容はこんなもの
role名:my-role
credential_type:iam_user
IAM ポリシー: { "Version": "202303" } 以下
EC2 へのフルアクセス

# role作成
vault write aws/roles/my-role \
        credential_type=iam_user \
        policy_document=-<<EOF
{
  "Version": "202303",
  "Statement": [
    {
      "Sid": "Stmt1426528957000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
EOF

AWS CLI をを取得しておきましょう

apk --no-cache add binutils curl
curl -sL https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub
curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.33-r0/glibc-2.33-r0.apk
curl -sLO https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.33-r0/glibc-bin-2.33-r0.apk
apk add --no-cache glibc-2.33-r0.apk glibc-bin-2.33-r0.apk
curl -sL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip
unzip -q awscliv2.zip
aws/install

IAM ユーザーをリストアップ

# IAM ユーザーList
aws iam list-users

# ロール (my-role) のすべてのアクティブなリース
vault list sys/leases/lookup/aws/creds/my-role

roleに紐づくクレデンシャルを生成

vault read aws/creds/my-role

Vault UIで生成するには

Vault UI ログイン後、aws/ シークレットエンジンをクリックし、my-role ロールを選択。「Credential type」に「IAM User」を指定して、「Generate」をクリック

クレデンシャルを破棄

# lease_id には破棄するIDを指定
vault lease revoke aws/creds/my-role/"<lease_id>"
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?