sops-encryption について
sops-encryptionは、設定ファイルの構造を保ちながら機密情報を暗号化する方法を扱うスキルです。Git、GitOps、Kubernetesでの利用に向け、KMSやPGPを使う手順を説明します。
主な機能
- 01設定ファイル内の機密情報を暗号化
- 02設定ファイルの構造を維持
- 03KMSまたはPGPによる暗号化
- 04環境ごとの鍵ルール設定
活用シーン
- 01Gitに機密情報を安全に保存
- 02Kubernetes Secretをコードとして管理
- 03環境別の暗号化ルールを設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bagelhole/ devops-security-agent-skills --skill sops-encryptionインストール後、Claude Code で/sops-encryptionを入力して読み込まれたか確認します。
詳細
SOPS 暗号化
構造を確認できる状態を保ちながら、設定ファイル内のシークレットを暗号化します。
このスキルを使用する場面
次の場合にこのスキルを使用します。
- Git 内のシークレットを暗号化する
- シークレットを扱う GitOps を実装する
- Kubernetes のシークレットをコードとして管理する
- 設定ファイルを暗号化する
前提条件
- SOPS がインストールされていること
- KMS(AWS、GCP、Azure)へのアクセス、または PGP キーがあること
インストール
# macOS
brew install sops
# Linux
wget https://github.com/getsops/sops/releases/download/v3.8.0/sops-v3.8.0.linux.amd64
chmod +x sops-v3.8.0.linux.amd64
mv sops-v3.8.0.linux.amd64 /usr/local/bin/sops
基本的な使い方
# Encrypt with AWS KMS
sops --encrypt --kms arn:aws:kms:region:account:key/key-id secrets.yaml > secrets.enc.yaml
# Decrypt
sops --decrypt secrets.enc.yaml
# Edit encrypted file
sops secrets.enc.yaml
# Encrypt in place
sops --encrypt --in-place secrets.yaml
設定
# .sops.yaml
creation_rules:
- path_regex: .*\.prod\.yaml$
kms: arn:aws:kms:us-east-1:account:key/prod-key
- path_regex: .*\.dev\.yaml$
kms: arn:aws:kms:us-east-1:account:key/dev-key
- path_regex: .*
pgp: fingerprint
Kubernetes との連携
# encrypted secret
apiVersion: v1
kind: Secret
metadata:
name: myapp-secrets
type: Opaque
stringData:
password: ENC[AES256_GCM,data:encrypted...]
sops:
kms:
- arn: arn:aws:kms:region:account:key/key-id
# With ArgoCD
# Install ksops plugin for ArgoCD to decrypt secrets
ベストプラクティス
- リポジトリに .sops.yaml を保存する
- 環境ごとに異なるキーを使用する
- 暗号化キーを定期的にローテーションする
- 暗号化されていないシークレットを決してコミットしない
- 読みやすさのためにキーエイリアスを使用する
関連スキル
- hashicorp-vault - シークレットの一元管理
- argocd-gitops - GitOps との連携
コメント
Markdown 対応