文書構成
- 対応の基本方針と状況別の案内:概要
- 設定ファイルにシークレットがある場合:設定ファイル
- 実行時の設定ファイルを維持する必要がある場合:実行時の設定ファイル
- Kubernetesでの運用:Kubernetes
- CI/CDでの運用:CI/CD
- Vaultやシークレット管理サービスでの運用:Vault・Secret Manager
- 事例
- Goサービス:Goのconfig.yamlの例
- Spring Boot:Springのapplication.ymlの例
シークレットの露出に関する問題と対処方法をまとめたセクションです。
認証情報、APIキー、アクセストークン、シークレットキー、証明書の秘密鍵などをソースコードに保存すると、リポジトリへのアクセス、ログ収集、ビルド成果物、イメージレイヤーなどを通じて漏えいするおそれがあります。
デプロイスクリプト、GitHub Actionsワークフロー、GitLab CIの設定、Jenkinsfileにシークレットを直接記載すると、リポジトリだけでなくビルドログからも露出するおそれがあります。
組織がVault、AWS Secrets Manager、Google Secret Manager、Azure Key Vaultなどの中央シークレットストアを使用している場合は、コード内のシークレットを移し、アプリケーションが実行時に取得または受け取る構成にしてください。