GCP의 Always Free에서 Vault를 HTTPS로 시작할 때까지

8899 단어 CaddyVaultgcpgce

하고 싶은 일



자격 증명 정보를 안전하게 관리하고 싶습니다.
HashiCorp Vault 을 사용해보고 싶습니다.
우선 GCP에서 무료로 하고 싶다.

사전 준비



HTTPS화하기 위해 하나의 도메인을 확보하십시오.

GCP



인프라를 만들고 있습니다.

GCE



GCE은 GCP의 컴퓨팅 서비스입니다. AWS에서 말하는 EC2.
Always Free f1.micro in 오레곤 리전에서 만듭니다.
스토리지도 무료 테두리 30GB로 만듭니다.



Vault의 Backend Storage로 GCS를 이용하기 위해 아래에서 권한을 부여해 둡니다.



GCS



Vault의 backend strage로 GCS를 활용하기 위해 미리 버킷을 만들어 둡니다.



도커



환경 구축은 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

브라우저에서 액세스하면 무사히 화면이 표시되었습니다.



마스터 키를 생성하고 다운로드합니다.


마스터 키로 무사히 처음 로그인할 수 있었습니다.




Feature Request: Support Let's Encrypt secret engine #4950 이 이슈가 Merge 되면 필요 없게 될지도!

좋은 웹페이지 즐겨찾기