c2.6 アクセスキーの代わりに一時的な認証情報を使う
IAM ユーザーと長期のアクセスキーは、誰かがローテーションするまで有効なままの永続的な認証情報です。短命で自動的に失効する認証情報を発行する IAM ロールを優先し、本当に保存が必要なシークレットにのみ AWS Secrets Manager を使います。
実装ガイダンス
長期キーよりロールを優先する
IAM ユーザーとアクセスキーは長期の認証情報です。誰かがローテーションするまで有効で、退職者や漏えいしたキーが気づかれないまま使われ続けることがあります。代わりにIAM ロールを使います。ロールは有効期限付きの一時的な認証情報を発行します。
- EC2 上のワークロード: インスタンスプロファイルをアタッチし、アプリがロールの認証情報を使うようにします(埋め込みキーは使いません)。
- Lambda 関数: 実行ロールを使います。
- Amazon ECS タスク: タスクロールを使います。
- 人によるアクセス: IAM Identity Center でフェデレーションし、ID プロバイダーから一時的な認証情報を得られるようにします。
保存が必要なシークレットには Secrets Manager を使う
アプリが本当にシークレット(データベースのパスワード、サードパーティの API キーなど)を必要とする場合は、AWS Secrets Manager に保存し、ハードコードせずに実行時に取得します。Secrets Manager は対応するシークレットを自動でローテーションできます。
全体像
How to validate
- 永続的なアクセスキーではなくロール(インスタンスプロファイル、Lambda/ECS の実行ロール)を使っているアプリの割合はどのくらいですか?
- 開発者はコードにシークレットを保存しないよう訓練されていますか?
- シークレットがコードにコミットされるのを防いでいますか(スキャン、pre-commit チェック)?
- データベースのパスワードなどのシークレットの保存とローテーションに AWS Secrets Manager を使っていますか?
Threats addressed
- メールやチャットで共有された、あるいは退職者に残されたアクセスキーは、失効すべき時期を過ぎても使われ続けることがあります。
- ソース管理にコミットされたキーは読み取り権限を持つ誰もがコピーでき、攻撃者は公開リポジトリから積極的に収集します。
- ハードコードされたキーは迅速なローテーションが難しく、既知の侵害時に最も問題になります。
AWS サービス
料金
無料トライアル · 30 日間
AWS Secrets Manager はシークレット 1 件あたり月額 0.40 USD に加え、API 呼び出し 10,000 件あたり 0.05 USD で、30 日間の無料トライアルがあります。Secrets Manager の料金を参照してください。
Cloud Security Maturity Model