機密データの管理
全てを Git で管理するのは便利ですが、Kubernetes の Secret や Terraform の Credential などといった機密データを Git に直接格納するのは安全ではありません。 ここでは、そういった機密情報をどのように Git 上で安全に管理できるかについて説明します。
基本的には以下のフローになっています。
- PipeCD の Web コンソールで暗号化した機密情報を Git に格納
Piped
は Deployment のタスクを実行する際に復号化
前提条件
この機能を使う為には公開鍵と秘密鍵のペアが必要になります。
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private-key
openssl pkey -in private-key -pubout -out public-key
作成後、Piped
のインストール時に以下のオプションを追加します。
--set-file secret.data.secret-public-key=PATH_TO_PUBLIC_KEY_FILE \
--set-file secret.data.secret-private-key=PATH_TO_PRIVATE_KEY_FILE
Piped の設定ファイルに secretManagement
フィールドを追加すれば準備は完了です。
apiVersion: pipecd.dev/v1beta1
kind: Piped
spec:
pipedID: your-piped-id
...
secretManagement:
type: KEY_PAIR
config:
privateKeyFile: /etc/piped-secret/secret-private-key
publicKeyFile: /etc/piped-secret/secret-public-key
機密データの暗号化
機密データを暗号化するために、 該当する Application の右側のオプションアイコンをクリックして、 “Encrypt Secret” を選択します。 機密情報を入力後、 “ENCRYPT” ボタンをクリックします。 暗号化されたデータが表示されるのでコピーして Git に保存してください。
Application リストのページ例
暗号化された機密データの例
暗号化された機密データを Git へ格納する
暗号化された機密データを利用できるようにする為には Application の .pipe.yaml
内で指定する必要があります。
encryptedSecrets
には暗号化された機密情報の文字列を記入しますdecryptionTargets
には 暗号化された機密情報が書かれているファイル名を記入します
apiVersion: pipecd.dev/v1beta1
# KubernetesApp などの Piped で定義されている Application の Kind
kind: {APPLICATION_KIND}
spec:
encryption:
encryptedSecrets:
password: encrypted-data
decryptionTargets:
- secret.yaml
暗号化された機密データへのアクセス
Application ディレクトリにある任意のファイルは .pipe.yaml
に書かれた機密情報にアクセスする為に .encryptedSecrets
Context を使用することができます。
いくつかの例を以下にあげます。
- Kubernets の Secret マニフェストへのアクセス
apiVersion: v1
kind: Secret
metadata:
name: simple-sealed-secret
data:
password: "{{ .encryptedSecrets.password }}"
- Lambda 関数の環境変数を設定
apiVersion: pipecd.dev/v1beta1
kind: LambdaFunction
spec:
name: HelloFunction
environments:
KEY: "{{ .encryptedSecrets.key }}"
全てのケースにおいて Piped
は暗号化された機密情報を復号化してから、Deployment タスクを実行します。
使用例
- examples/kubernetes/secret-management
- examples/cloudrun/secret-management
- examples/lambda/secret-management
- examples/terraform/secret-management
- examples/ecs/secret-management
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.