はじめに
前回は、AWSのセキュリティの要となるIAMポリシーの基本的な仕組みについて解説しました。今回は、IAMポリシーのさらなる活用を可能にする条件 (Condition) について詳しく解説していきます。
条件 (Condition) とは?
条件とは、IAMポリシーがいつ有効になるかを指定する追加のルールです。条件を追加することで、ポリシーをより細かく制御し、セキュリティを強化することができます。
例えば、特定のIPアドレスからのアクセスのみ許可する、特定の時間帯のみアクセスを許可する、といった条件を設定できます。条件は、条件キーと条件値のペアで構成されます。
条件キー (Condition Key) とは?
条件キーは、アクセス要求に関する情報 (認可コンテキスト) 内の特定の属性を指し示します。例えば、アクセス要求を行ったユーザーのIPアドレス、リクエストされたリソースのタグ、リクエストされたアクションなどです。
条件値 (Condition Value) とは?
条件値は、条件キーの値と比較される値です。例えば、条件キーが aws:SourceIp
(アクセス要求を行ったユーザーのIPアドレス) であれば、条件値には具体的なIPアドレスを指定します。
条件演算子 (Condition Operator) とは?
条件値を比較するためには、条件演算子を使用します。主な条件演算子には以下のようなものがあります。
- Equals: 完全一致
- Like: ワイルドカードによる一致
- StringEqualsIgnoreCase: 大文字小文字を区別しない文字列一致
- NumericEquals: 数値一致
- DateEquals: 日付一致
- IpAddress: IPアドレス一致
条件の活用例
条件を活用することで、よりきめ細かいアクセス制御を実現することができます。以下は条件の活用例です。
- 特定のIPアドレスからのアクセスのみ許可する:
{
"Condition": {
"IpAddress": {
"aws:SourceIp": ["192.168.1.10", "10.0.0.1"]
}
}
}
- 特定の時間帯のみアクセスを許可する:
{
"Condition": {
"DateEquals": {
"aws:CurrentTime": ["2023-03-15T10:00:00Z", "2023-03-15T18:00:00Z"]
}
}
}
- 特定のタグを持つリソースへのアクセスのみ許可する:
{
"Condition": {
"StringEqualsIgnoreCase": {
"aws:ResourceTag/Department": ["Finance", "Marketing"]
}
}
}
まとめ
条件は、IAMポリシーの柔軟性を高め、セキュリティを強化するための重要な要素です。条件を活用することで、よりきめ細かいアクセス制御を実現し、AWS環境のセキュリティを強化することができます。