LoginSignup
0
1

More than 3 years have passed since last update.

GCPのAlways FreeでVaultをHTTPSで起動するまで

Last updated at Posted at 2020-07-05

やりたいこと

クレデンシャル情報のセキュアな管理がしたい。
HashiCorp Vaultを使ってやってみたい。
とりあえずGCPで無料でやりたい。

事前準備

HTTPS化するためにドメインを1つ取得しておいてください。

GCP

インフラの作成を実施してきます。

GCE

GCEとは、GCPのコンピューティングサービスです。AWSで言うところのEC2。
Always Freeのf1.micro in オレゴンリージョンで作成します。
ストレージも無料枠の30GBで作成します。

image.png

VaultのBackend StorageとしてGCSを利用するため、下記で権限を付与しておきます。

image.png

GCS

Vaultのbackend strageとしてGCSを利用するため、事前にバケットを作成しておきます。

image.png

Docker

環境構築はDockerコンテナで行っていきます。

Dockerのインストール
curl -fsSL https://get.docker.com/ | sh
# sudoersに所属している必要があります
Dockerグループに追加
sudo usermod -aG docker $USER
# 非ルートユーザでdockerが実行できるようになります
DockerComposeのインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

ここまできたら一度接続しなおしてください。

コンテナの構築

マシンが作成されたら、本命のVaultを構築します。HTTPS対応1するために、今回はCaddyを利用します。

DNS登録

Caddyで適切にLet's Encryptによる証明書発行をするために、事前にGCEのパブリックIPアドレスを、自分が所有するドメインのA/AAAAレコードに登録する必要があります。

ここは省略します。適宜、Route53やお名前ドットコムなどで設定してください。

VaultとCaddy

下記の定義で、起動しました。

ディレクトリ構成
.
├── caddy
│   └── Caddyfile
├── docker-compose.yml
└── vault
    └── config
        └── vault.json
docker-compose.yml
version: "3"
volumes:
  vault-data:
  caddy-data:
services:
  vault:
    image: vault:1.4.3
    container_name: vault
    restart: unless-stopped
    volumes:
      - ./vault/config:/vault/config
      - ./vault/policies:/vault/policies
      - vault-data:/vault/data
    expose:
      - 8200
    cap_add:
      - IPC_LOCK
    command: vault server -config=/vault/config/vault.json
  caddy:
    image: caddy:2.1.1-alpine
    container_name: caddy
    restart: unless-stopped
    volumes:
      - caddy-data:/data
      - ./caddy:/etc/caddy
    ports:
      - 80:80
      - 443:443
    links:
      - vault
Caddyfile
# 下記を自身のドメイン名を記載してください。
# vault.example.com

# Set this path to your site's directory.
root * /usr/share/caddy

# Enable the static file server.
file_server

# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
reverse_proxy vault:8200
vault.json
{
  "ui": true,
  "listener": {
    "tcp": {
      "address": "0.0.0.0:8200",
      "tls_disable": "true"
    }
  },
  "backend": {
    "gcs": {
      "bucket": "ここにGCSのバケット名を記載"
    }
  },
  "default_lease_ttl": "168h",
  "max_lease_ttl": "0h",
  "api_addr": "http://0.0.0.0:8200"
}

ではコンテナを起動します。

コンテナ起動
docker-compose up -d

ブラウザからアクセスすると無事に画面が表示されました。

image.png

マスターキーを生成してダウンロードします。
image.png

マスターキーで無事に初回ログインできました。
image.png


  1. Feature Request: Support Let's Encrypt secret engine #4950 このissueがMergeされたらいらなくなるかもね! 

0
1
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
1