10
10

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 5 years have passed since last update.

credstash/gcredstash - KMS/DynamoDBを使った秘密パラメータの保管

Last updated at Posted at 2016-06-08

credstashはAWS Key Management Service (KMS)とDynamoDBを使った秘密パラメータの保管ツールです。KMSで暗号化キーの生成を行い、暗号化した値をDynamoDBに保持します。
gcredstashはcredstashをgoに移植したものです。

credstash/gcredstashには以下のようなメリットがあります。

  • シンプル: gcredstash put/getで値をセット/取得するだけなので簡単
  • 安全: 値はAESで暗号化され、復号した値はHMACでチェックされる
  • IAMとの連携: バックエンドはDynamoDBなので、IAMと連携できる
  • サーバレス: Vaultのように専用のサーバを立てる必要がない

この記事では主にgcredstashについて説明します。

インストール

OS X

brew install https://raw.githubusercontent.com/winebarrel/gcredstash/master/homebrew/gcredstash.rb

Ubuntu

wget -q -O- https://github.com/winebarrel/gcredstash/releases/download/v0.1.1/gcredstash_0.1.1_amd64.deb | dpkg -i -

使い方

まずIAMのコンソールから「credstash」というAliasのEncryption Keyを作成します。

20160608184639_img20160608-12387-w0hd1u.png

20160608184726_img20160608-30856-5012g6.png
※作成するリージョンはCLIのAWS_REGIONと同じにする

次にセットアップを実行。

$ gcredstash setup
Creating table...
Waiting for table to be created...
Table has been created. Go read the README about how to create your KMS key

putで値のセット、getで値の取得ができます。

$ gcredstash put myapp.db.pass "secret1234567890 秘密です!"
myapp.db.pass has been stored

$ gcredstash get myapp.db.pass
secret1234567890 秘密です!

値にはバージョンがあります。上書きしても古いバージョンは残ります。

$ gcredstash list
myapp.db.pass -- version: 1

実態はDynamoDBのテーブルで値は暗号化されます。

$ ddbcli
ap-northeast-1> select all * from credential-store \G
[
  {
    "contents": "b1+JhrhyDwO9v1MemvkRJwtWUKoSrlRR6eRIsa2DIOM=",
    "hmac": "b8cd59e4a450663ed79d96b9b7c330cc616741abb54c1ce2a981ca5a466ea54d",
    "key": "CiA93iUFTdmOB+Sg6Dxn4g9e8rZni2QUKk+Yah/N05um1BLLAQEBAQB4Pd4lBU3ZjgfkoOg8Z+IPXvK2Z4tkFCpPmGofzdObptQAAACiMIGfBgkqhkiG9w0BBwaggZEwgY4CAQAwgYgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMeVbEFcnsqMszzvewAgEQgFveVAdQYaH95WSScjDdKLWXOStmGn6DW5Lg9I4+2MeLVt9/04CZm1m67kKalBfzBM/NECCx370WDKqr0hGrFHHPsZxpZvoFvGA+QxDhRcMsMkQOd34ppWbaZjz9",
    "name": "myapp.db.pass",
    "version": "0000000000000000001"
  }
]
// 1 row in set (0.08 sec)
10
10
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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?