AWSアカウントへのスイッチロールについてまとめてみたので紹介したいと思います。
対象者:初心者
書いてある内容:基本的な概要と考え方
書いていない内容:具体的なロールの実装方法
そもそもスイッチロールとは
スイッチロールはIAM機能の一部であり、ユーザーが一時的に別のAWSアカウントの権限を引き受けることを可能にする仕組みです。この機能を使用すると、ユーザーは自身のIAMユーザーまたはロールの権限を維持したまま、異なるAWSアカウント内で定義された別のIAMロールに切り替え、スイッチロール先のアカウントの操作をすることができます。
IAMRoleの重要な考え方
- ユーザーに必要最小限の権限のみを付与する。スイッチロールはロールごとに細かく権限を定義することが可能です。ユーザーは必要な時に必要な権限を持つロールに切り替えることで、常に必要最小限の権限でのみ操作を行うことができます。これにより、誤操作や不正アクセスのリスクを大幅に低減させることができます。
- 長期的な認証情報の使用を避け、短期的で失効する認証情報を使用します。スイッチロールを使用すると、ユーザーは一時的な認証情報を取得します。この認証情報は通常、設定された時間が経過すると自動的に失効します。
- アカウント間で信頼関係を確立し、特定の操作を委任することで、中央集権的な管理と分散的な運用を両立させています。この原則により、組織全体のセキュリティポリシーを維持しながら、各部門や環境に必要な柔軟性を提供することが可能になります。
- スイッチロールの使用は全て記録され、後から監査することができます。これにより、誰がいつどのようなアクセスを行ったかを追跡し、セキュリティインシデントの調査や法令順守の確認に役立てることができます。
仕組み
スイッチロールのプロセスでは、ユーザーは一時的な認証情報を取得し、それを使用して特定の期間、別のアカウントのリソースにアクセスします。この一時的な認証情報は、ロールに関連付けられたポリシーによって定義された権限を持ち、通常、設定された時間が経過すると自動的に失効します。重要なのは、スイッチロールによって付与される権限が、そのロールに明示的に定義された権限に厳密に制限されることです。
実装
スイッチロールを実装するには、アクセス元のアカウント(信頼するアカウント)とアクセス先のアカウント(信頼されるアカウント)の間に信頼関係を確立する必要があります。この信頼関係は、どのIAMユーザーまたはロールがスイッチロールを実行できるかを指定し、セキュリティを確保します。また、多要素認証(MFA)を要求するなど、追加のセキュリティ層を実装することも可能です。
スイッチロールは、大規模な組織、マルチ環境開発シナリオ、クラウドサービスプロバイダー、セキュリティ監査、コスト管理、災害復旧計画など、様々な状況で有用です。この機能により、組織は必要最小限の権限の原則を適用しつつ、効率的なアクセス管理を実現し、セキュリティとコンプライアンスを強化することができます。
ユースケース
大規模な企業では、開発、テスト、本番という複数の環境を別々のAWSアカウントで管理していると想定します。本番環境へのアクセスは特に厳重に管理するのが通常です。従業員は開発環境で作業していますが、本番環境でのトラブルシューティングや緊急のデプロイメントが必要になります。ここでスイッチロールが活躍します。
Aさんには、本番環境のAWSアカウントに「緊急対応ロール」が設定されています。このロールには、特定のEC2インスタンスへのアクセス、ログの閲覧、特定のS3バケットへの読み取り権限が付与されていますが、新しいリソースの作成や既存リソースの削除権限は与えられていません。
本番環境で重大な問題が発生したとします。Aさんは自身の開発環境のIAMユーザーアカウントを使用してAWSコンソールにログインし、そこからスイッチロール機能を使って本番環境の「緊急対応ロール」に切り替えます。この操作には多要素認証(MFA)が要求され、追加のセキュリティ層が確保されます。
ロールを切り替えた後、Aさんは本番環境の特定のEC2インスタンスにアクセスし、ログを確認し、問題の原因を特定します。しかし、このロールではインスタンスの停止や再起動はできないよう制限されているため、必要に応じて別の承認プロセスを経る必要があります。
また、このスイッチロールの使用は全て記録され、後で監査チームが確認できるようになっています。さらに、このロールの認証情報は2時間後に自動的に失効するよう設定されており、長時間のアクセスによるリスクを軽減しています。
このユースケースでは、スイッチロールを使用することで、Aさんは必要な時に必要な権限だけを持って本番環境にアクセスし、問題の対応が可能となります。
以上