HashiCorp Vaultを触ってみた

# はじめに
ローカル環境とAWS EC2上にHashiCorp Vaultサーバーの環境を構築してみたときのメモです

# どんなことができるの？
AWSのIAM ユーザーの動的に作成することができます。

# インストール方法
### ローカルで実行する
環境 WSL Ubuntu18.04

HashiCorp Vaultをインストール
```
sudo yum install vault
```
バージョン確認
```
vault version
```
開発サーバーの起動
```
vault server -dev
```
起動できるとこのような画面になる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/8c26300e-4c05-6e09-e4b4-981646a16bc1.png)
そしてhttp: //127.0.0.1:8200 にアクセスすると管理画面にアクセスできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/102b341a-a4b1-c525-e71a-e148242a2303.png)
ターミナルに表示されている Root Tokenを入力するとログインできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/9251b372-d32a-1b1e-cbef-3a1d63ca44f5.png)
ログイン後の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/fc3cabed-6434-aef7-93ef-9e62e3a7a837.png)
### EC2上で実行 EIPからアクセスできるようにする
環境 Amazon Linux2

Vault用のEC2インスタンスに接続

ココからEC2で操作
HashiCorp Vaultをインストール
```
sudo yum install vault
```
バージョン確認
```
vault version
```
EIPでアクセスしたいためそれ専用のコンフィグファイルを作る
```
vi ~/config.hcl
```
コンフィグファイルに下記を入力
```
storage "inmem" {}

listener "tcp" {
 address     = "EC2のプライベート IPv4 アドレス:8200"
 tls_disable = true
}
```
lsコマンド等で今いるディレクトリにconfig.hclがあることを確認

開発サーバーを起動
```
vault server -dev -config=config.hcl
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/01025178-f3c8-d155-142c-60b9900a5ce7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/326c22ea-4172-187f-f8ad-3e3d6e655193.png)
ブラウザからアクセス
http:// EIPアドレス:8200/ にアクセス
ログイン画面が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/436028a7-1ebb-b3fe-76a1-6d13c14edcad.png)
ターミナルに表示されている Root Tokenを入力するとログインできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/d2b0e197-c068-88c1-3781-d3ed654aee8e.png)

# 適当なアカウント発行してみる
ログイン後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/57374e0d-dad8-08eb-37b7-cad5239edb96.png)

AWSアカウントを連携
Access→Auth Methods→Enable new methodを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/dcb1c7a5-df17-f5c2-7d4c-284264b24935.png)
AWSを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/650c8da1-c0fb-de31-82fb-80a553558dfb.png)
Enable Methodを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/42abcf5b-a40f-a437-6a6f-73caaabe111c.png)
Vaultを利用したい環境でVault専用のIAMを作ってそのアクセスキーとシークレットキーを入力
今回はテストのためVault専用のIAMにはadminロールを付けています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/caf63a69-e69a-3b58-6d7d-32a4397170a6.png)

Secrets → Secrets Engines → Enable new engine
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/d75e7e31-5144-cf6f-44e4-b0997e2f6737.png)
AWSを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/d2cb6d31-63f7-d63b-ef30-819d0be3515d.png)
Enable Engineを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/e25afefa-3878-6658-8605-6c17adac52f6.png)
Create Roleを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/303234bb-088d-3533-e7c4-fe02f5929d65.png)
今回は適当にs3の閲覧のみのポリシーを付ける →Create Role
使ったポリシー

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/509d5c83-e75a-e036-aac0-ca34d06d792d.png)
s3という名前のロールができた
右の方のGenerate credentialsを選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/dc0361ee-30fb-5ec9-fecc-c26115b00b77.png)
Generateを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/fd97af73-6f19-02ef-2b56-361733201d88.png)
アカウントが発行される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/a275ccf3-8626-bc30-b42f-f30069b74533.png)
青いボタンのCopy credentialsを選ぶと動的に発行したアカウントのアクセスキーを取得できる

発行したアカウントを使ってs3を見てみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957080/1b869cc8-f7b8-cac9-4e2c-137fd9948140.png)
問題なく表示できた

今回はここまで