LoginSignup
40
22

More than 5 years have passed since last update.

ファイルをAWS KMSで暗号化して安全にgit commitできるようにするmozilla/sopsの使い方

Last updated at Posted at 2017-12-19

sopsってなに?

sopsはMozillaが作っているファイル暗号化用のコマンドラインツール。Gitコミットするファイルの暗号化などに使える。

使い方

インストール

brew install sops

利用したいAWS KMS Key ARNを指定

環境変数で指定する。

export SOPS_KMS_ARN="arn:aws:kms:ap-northeast-1:<myawsaccountid>:key/<mykeyid>"

エディタで新規暗号化ファイルを作成する

sops newfile.secret.yaml

$EDITORが開いて、それを保存すると暗号化済みファイルが作成される。KMS KeyのARNがYAMLに含まれているので、復号時にはKey ARNを指定する必要はない。

標準入力の内容から新規暗号化ファイルを作成する

できない。

特定の内容の暗号化ファイルを作成する

一時ファイルを経由する必要がある。

以下のようなYAMLをAWS KMSで暗号化したい場合、

$ k create secret generic testsecret --from-literal=foo=bar --dry-run -o yaml
apiVersion: v1
data:
  foo: YmFy
kind: Secret
metadata:
  creationTimestamp: null
  name: testsecret
k create secret generic testsecret --from-literal=foo=bar --dry-run -o yaml > testsecret.secret.yaml

sops -e <平文ファイル>を実行すると、平文ファイルを暗号化したものが標準出力に出力される。

$ sops -e testsecret.secret.yaml
[AWSKMS]     INFO[0000] Encryption succeeded                          arn="arn:aws:kms:ap-northeast-1:<myawsaccountid>:key/<mykeyid>"
apiVersion: ENC[AES256_GCM,data:mIc=,iv:O9cnTy4nWRY5CY3BbXLGICt1e0KyC1HDfYMXxM0wRXw=,tag:UQQ2GeaqYD7J4WLyCvl4lw==,type:str]
data:
    foo: ENC[AES256_GCM,data:v4P4yw==,iv:T89jBOzcxRE5Y8GVpibyrw5IVzlpJBMrbRQtpWtXSz8=,tag:cNJyGYbLPZXTkbMGcOK7yg==,type:str]
kind: ENC[AES256_GCM,data:XwSilhoU,iv:UYDguHZBotJvQ6iyzcUXDrdkjoaKMY097VACkLzZzL4=,tag:e9szbYBA2OvhFA3aZCFxfQ==,type:str]
metadata:
    creationTimestamp: null
    name: ENC[AES256_GCM,data:siTU+Lq+zXM6wg==,iv:q0cwXRIJNoam7zAhHAokYFV0rwRZekroUnAgUogsmH8=,tag:nqeeOK9t9vlLa7vaZ1Q3LQ==,type:str]
sops:
    kms:
    -   arn: arn:aws:kms:ap-northeast-1:<myawsaccountid>:key/<mykeyid>
        created_at: '2017-12-19T11:02:39Z'
        enc: AQICAHj5+CYmKSHMJNh0QQMHsFDjETdV8lkcmL0GEwcYR6rhEQGtPaoRRqxxFtQo1a0hCqItAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMCpsQSf6z3KIrcGyAAgEQgDtNcOq8NJjwdxsHcp0ePon0extUfc3NrOkx5RyUUbB3KyUzi0WpyQy29XGUovRbG58Sisszr53KzJE5hg==
    gcp_kms: []
    lastmodified: '2017-12-19T11:02:39Z'
    mac: ENC[AES256_GCM,data:gyUosrc+BwtiqHKOe9FBNi/3XnHQqDNDazmsDQCjNsRn8efAXNK/0VqI7EOrgy7rGycbB7ZQ0ZZO7AG3m/kpDzlHBMSEDMkB7AyJBXeaqTMXiNfRRrI4Qn6i7FdPBeFOs5w+q6RxDevmiorYFdKpdTQQIFNQW4EPX4WtC4bGkk4=,iv:AZNw88CPip+DkBbPcH6BoG2YYfivoFPNKPyGdsl++cw=,tag:42vXym8ALKDbYy2vyKgfMA==,type:str]
    pgp: []
    unencrypted_suffix: _unencrypted
    version: 3.0.0

ファイルにリダイレクトする。

$ sops -e testsecret.secret.yaml  > testsecret.secret.sops.yaml
[AWSKMS]     INFO[0000] Encryption succeeded                          arn="arn:aws:kms:ap-northeast-1:<myawsaccountid>:key/<mykeyid>

ファイルを復号してパイプする

sops -d <暗号化済みファイル>を実行すると、復号されたものが標準出力に出力される。

$ sops -d testsecret.secret.sops.yaml | k create -f -
[AWSKMS]     INFO[0000] Decryption succeeded                          arn="arn:aws:kms:ap-northeast-1:<myawsaccountid>:key/<mykeyid>"
[SOPS]   INFO[0000] Data key recovered successfully
secret "testsecret" created

暗号化済みファイルを編集する

sopsコマンドをエディタのように使う。具体的には、sops <暗号化済みファイル>を実行すると、そのファイルを復号してから、環境変数EDITORで指定されたエディタ(たいていデフォルトはviになってると思う)で開いてくれる。

sops testsecret.secret.sops.yaml

エディタで内容を編集して、保存、その後にエディタ終了すると、sopsが自動的に結果を再度暗号化してファイルに書き出してくれる。

40
22
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
40
22