条件、ワイルドカード、ポリシー変数
コンテキストキーと動的な値でアクセスを細かく調整します。
「条件、ワイルドカード、ポリシー変数」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
アクセスの細かな調整
アクションとリソース以外にも、IAM にはポリシーを正確かつ動的にするための強力な機能があります。それが条件、ワイルドカード、ポリシー変数です。これらを使いこなすと、必要なアクセスだけを、まさに適切な状況で許可できます。これは最小権限の本質であり、試験でも繰り返し問われるテーマです。
Condition 要素
Condition ブロックには、ステートメントを適用するためにすべて真でなければならない1つ以上のテストを記述します。各テストは、演算子、条件キー、値の組み合わせで構成されます。たとえば、StringEquals と aws:PrincipalTag の組み合わせです。1つのブロック内に複数のキーがある場合は AND 条件になり、1つのキーに複数の値がある場合は OR 条件になります。
よく使われる条件キー
グローバル条件キーは、試験で頻繁に登場します。
- aws:SourceIp — 呼び出し元の IP 範囲で制限します。
- aws:SecureTransport — TLS を必須にします。
- aws:MultiFactorAuthPresent — MFA を必須にします。
- aws:PrincipalOrgID — 自分の組織に限定します。
サービス固有のキー(s3:prefix など)を使えば、さらに細かく制御できます。
転送中の暗号化を強制する
よく使われるパターンとして、リクエストが TLS を使用していない場合にアクセスを拒否する方法があります。このバケットポリシーの条件は、HTTPS 以外の呼び出しをブロックし、転送中のデータを常に暗号化します。試験では、「S3 で転送中の暗号化を必須にする」問いの答えとしてよく登場します。
"Condition": {
"Bool": { "aws:SecureTransport": "false" }
}Condition 演算子
演算子は値の比較方法を定義します。たとえば、StringEquals、StringLike(ワイルドカードをサポート)、IpAddress、DateGreaterThan、Bool、Nullなどがあります。演算子に IfExists を追加すると、キーが存在しない場合にも条件を満たすようになります。意図したロジックにするには、適切な演算子を選ぶことが重要です。
アクションでのワイルドカード
ワイルドカード(任意の文字列を表す*、1文字を表す?)を使うとポリシーを簡潔にできますが、過剰なアクセス許可につながる可能性があります。s3:Get* は読み取り系のすべての操作を対象にし、s3:* は S3 のすべてを対象にします。必要性を満たす中で最も範囲の狭いワイルドカードを使い、確認するポリシーに広範なワイルドカードがあれば注意してください。
リソースでのワイルドカード
リソース ARN でもワイルドカードを使用できます。たとえば arn:aws:s3:::logs/2024/* とすれば、1つのプレフィックスに範囲を限定できます。これにより、すべてのオブジェクトを列挙せずに、フォルダーやパターンを対象にできます。ただし、Resource に "*" だけを指定するとアカウント全体に及ぶアクセスを許可するため、その広さが本当に必要かを常に検討してください。
ポリシー変数
ポリシー変数は、${...} という構文を使って、評価時にリクエストのコンテキストを挿入します。最も便利なのは ${aws:username} で、1つのポリシーによって各ユーザーが自分自身のリソースだけにアクセスできるようにします。変数を使うと、1つの再利用可能なポリシーをプリンシパルごとに異なる動作にでき、最小権限を効率よく実現できます。
ユーザーごとのリソース例
このステートメントを使うと、各ユーザーは自分のユーザー名にちなんだフォルダー内のオブジェクトだけを管理できます。全員に1つのポリシーを適用する強力なパターンです。
"Resource": "arn:aws:s3:::team-bucket/${aws:username}/*"タグベースのアクセス(ABAC)
属性ベースのアクセス制御(ABAC)では、条件の中でタグを使用し、プリンシパルのタグ(aws:PrincipalTag)とリソースのタグ(aws:ResourceTag)を比較します。一致するとアクセスが許可されます。ABAC は高い拡張性を持ちます。プロジェクトごとに新しいポリシーを作成するのではなく、タグでアクセスを許可できるためです。これは、試験でも重視される現代的なベストプラクティスです。
総合的に活用する
これらのツールを意図的に組み合わせましょう。MFA、IP、TLS、組織への所属を条件にアクセスを制御するには条件を使い、ワイルドカードは狭い範囲で慎重に使い、拡張性のあるプリンシパルごとの最小権限にはポリシー変数とタグを使います。これらを組み合わせることで、適切に設計した1つのポリシーで、多数のアイデンティティとリソースに対して、正確でコンテキストに応じたアクセス制御を適用できます。
クイックチェック
条件と変数を確認しましょう。
まとめ
条件は、StringLike や Bool などの演算子を使い、コンテキストキー(aws:SourceIp、aws:SecureTransport、aws:MultiFactorAuthPresent、aws:PrincipalOrgID)に基づいてステートメントの適用を制御します。ワイルドカード(* と ?)を使うとポリシーを簡潔にできますが、過剰なアクセス許可につながる可能性があります。${aws:username} のようなポリシー変数とタグベースの ABACにより、拡張性のあるプリンシパルごとの最小権限を実現できます。
よくある質問
「条件、ワイルドカード、ポリシー変数」レッスンは無料ですか?
はい。「条件、ワイルドカード、ポリシー変数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「条件、ワイルドカード、ポリシー変数」で何を学びますか?
コンテキストキーと動的な値でアクセスを細かく調整します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「条件、ワイルドカード、ポリシー変数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IAMポリシードキュメントの構造
- アイデンティティベースとリソースベースのポリシー
- ポリシー評価の決定フロー
- 条件、ワイルドカード、ポリシー変数