AWS権限境界とSnykでIAMセキュリティを最大化する
2023年6月26日
0 分で読めます急速に変化する今日のクラウド環境では、Amazon Web Services(AWS)を利用する組織にとって、権限の管理と強固なセキュリティ制御の確保が不可欠です。AWS Identity and Access Management(IAM)は、AWSリソースへのアクセス権限を管理するうえで重要な役割を果たします。IAMでは権限をきめ細かく制御できますが、AWS IAMの権限境界を利用すると、アクセス制御を調整するためのセキュリティと柔軟性をさらに高められます。
AWS権限境界は、IAMプリンシパル(ユーザーとロール)が実行できる操作を制限するセキュリティの仕組みです。権限境界を設定することで、組織は一貫性のある明確な認可フレームワークを確立し、意図しない、または悪意のある権限昇格を防止できます。権限設定により、機密リソースへの不正アクセスのリスクを軽減し、セキュリティ侵害や人的ミスによる潜在的な影響を抑えられます。
つまり、権限境界は権限を囲むガードレールです。ただし、それ自体が権限を付与するわけではありません。たとえば、このユーザーにはSecurityAudit権限境界が設定されていますが、権限はありません。


メリットとユースケース
IAM環境が分散している組織や、IAM環境が複雑な組織では、IAM権限境界が特に役立ちます。
権限境界によってセキュリティと運用効率を高められる、次のユースケースをご覧ください。
クラウドIAMの集中管理チーム: 権限境界を使うと、チームや事業部門は、組織のセキュリティポリシーで定められた境界内で、自らのIAMエンティティと関連する権限を管理できます。管理タスクを委任することで、集中管理されたセキュリティフレームワークを維持しながら、俊敏性と自律性を高められます。「委任管理者」は、IAM権限境界の主なユースケースです。
マルチテナント環境: 共有インフラストラクチャ環境やマルチテナントアプリケーションでは、権限境界によって、あるテナントが別のテナントのリソースにアクセスするのを防げます。テナントごとに境界を定義することで、組織は分離を確保し、強固なセキュリティ境界を維持できます。
職務分掌: 権限境界は、組織内の責任を分離し、徹底するうえで有効です。管理者は、開発、テスト、本番環境などの職務に応じて境界を割り当て、不正な操作を防止できます。
サードパーティーのアクセス: 権限境界を使うと、請負業者やベンダーなどの外部関係者にアクセスを許可する際に、制御レイヤーを追加できます。必要なリソースのみにアクセスを制限する境界を定義することで、サードパーティーに広範な権限を付与するリスクを軽減できます。
権限境界の評価方法
IAMエンティティに権限境界が定義されている場合、ポリシー評価プロセスの終盤で次のように評価されます。



IAMの権限判定ツリーは複雑です。これらの図にはアカウント間アクセスは含まれておらず、リソースベースのポリシーも完全には説明されていない点にご注意ください。各列は、IAMプリンシパルの権限を許可または拒否する可能性のある情報源を表しています。権限評価では5番目のレーンに権限境界があり、権限を許可または拒否できます。
重要なのは、リソースベースのポリシーがIAM権限境界の意図を覆す場合があることです。リソースベースのポリシーがリクエストを行うプリンシパルに権限を直接付与する場合、権限境界での暗黙的な拒否は、最終的な判定に影響しません。これは、リソースベースのポリシーが権限境界よりも先に評価されるためです。
強固なセキュリティ態勢を維持するには、組織はリソースポリシーを慎重に設計・監視し、意図したセキュリティ境界に沿っていることを確認する必要があります。定期的な監査やレビュー、開発者向けツール、権限ポリシーのSCM統合は、すべての上書きが意図的であり、最小権限の原則に準拠していることを確かめるうえで不可欠です。
Snykのルール
Snykは、IAM権限境界を評価する唯一のInfrastructure as Code(IaC)セキュリティツールであり、コードからクラウドまでをカバーするスイートです。以下のルールが含まれています。各ルールに添えられたスクリーンショットは、Snyk CLIを実行して取得したものです。
IAMプリンシパルに権限境界がない
このポリシーは、権限境界が割り当てられていないIAMロールとユーザーを検出します。集中型または分散型のIAMチームは、権限境界が使用されているかどうかをすばやく把握できます。次のTerraformスニペットでは、どちらのユーザーにも権限境界が設定されていないため、このルールに該当する検出結果が生成されます。


IAMプリンシパルの権限境界が過度に広い
権限境界が設定されているIAMロールとユーザーを対象に、このポリシーは範囲が広すぎる可能性のある権限境界を検出します。たとえば、次のようなIAM権限境界です。
実質的には権限境界がないのと同じです。この可視性を追加することで、組織は最小権限の原則に従い、権限をより効果的に削減できます。次のTerraformコードは、権限境界の範囲が広すぎる各IAMプリンシパルについて検出結果を生成します。


IAMの委任管理者の設定ミス
前述のとおり、IAMの委任管理者は権限境界の主なユースケースです。これにより、集中管理型のIAMチームは、開発者が業務上のニーズに合わせて独自のユーザーやロールを作成できるようにしながら、それらが作成されるアカウントに対する一定の制御を維持できます。ただし、新しく作成されたプリンシパルにも、それぞれ独自の権限境界が必要です。IAMチームは、IAM条件を適切に設定したIAMポリシーを使って、この要件を適用できます。ここでは、他のプリンシパルを作成できるユーザーとロールの権限を調べ、該当するIAMポリシーに適切な条件が設定されているかを評価します。これらの検出結果により、委任管理者による権限昇格の可能性を把握できます。


リソースポリシーが権限境界を上書き
このSnykルール案では、リソースポリシーを調べ、対象リソースへのアクセスを許可されているIAMプリンシパルと、そのプリンシパルがアイデンティティベースのポリシーおよび権限境界に照らしてアクセスを許可されるべきかどうかを判断します。これにより、リソースベースのポリシーが権限境界を上書きしている場所など、セキュリティ態勢にギャップがある可能性を組織が特定できます。リソースベースのポリシーに対応するリソースの一部を以下に示します。
S3バケット
KMSキー
DynamoDBテーブル
SecretsManagerのシークレット
Snykでセキュリティガバナンスを自動化
Snyk IaCは、統合ポリシーエンジンによって、開発者が設定を保護し、IDEから稼働中のクラウド環境まで一貫したセキュリティの可視性とガバナンスを実現できるよう支援します。上記のIAM権限に関する組み込みのSnykセキュリティルールセットに加え、チームはOPAのRegoクエリ言語でカスタムルールを定義できます。また、10以上のフレームワークに対応したコンプライアンスマッピング済みのルールセットで、クラウドコンプライアンスを確保できます。
参考資料
ソースコードの段階からインフラを保護
Snykはワークフロー内のIaCセキュリティとコンプライアンスを自動化し、構成ドリフトや不足しているリソースを検出します。
