AWSのセキュリティ設定において、IAMポリシーはアクセス制御の要となります。特にコンディション要素(Condition element)を活用することで、より柔軟で詳細なアクセス制御が可能になります。本記事では、IAMポリシーのコンディション要素についてわかりやすく解説します。
コンディション要素とは?
コンディション要素は、IAMポリシー内でアクセス許可を付与または拒否する際に、追加の条件を指定するための要素です。
これにより、特定の状況下でのみアクションを許可または拒否するなど、アクセス制御をより細かく設定できます。
コンディション要素の主な特徴
• 柔軟なアクセス制御:リクエストの属性(IPアドレス、日時、認証方法など)に基づいてアクセスを制限できます。
• キーと値の組み合わせ:条件キー、条件演算子、条件値を組み合わせて条件を定義します。
• 複数の条件の組み合わせ:AND条件やOR条件を使って、複雑な条件を設定できます。
コンディション要素の構造
IAMポリシー内でのコンディション要素は、以下のように記述します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow" または "Deny",
"Action": "アクション",
"Resource": "リソース",
"Condition": {
"条件演算子": {
"条件キー": "条件値"
}
}
}
]
}
条件演算子の例
• StringEquals:文字列が等しい場合に一致
• IpAddress:指定したIPアドレスまたは範囲に一致
• DateGreaterThan:指定した日時より後の場合に一致
• Bool:ブール値が一致する場合に一致
条件キーの例
• aws:SourceIp:リクエスト元のIPアドレス
• aws:CurrentTime:リクエストの日時
• aws:MultiFactorAuthPresent:多要素認証の使用有無
• s3:prefix:S3オブジェクトのプレフィックス
具体的な例
例1:特定のIPアドレスからのアクセスのみ許可
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}
例2:業務時間内(午前9時から午後5時)だけアクセスを許可
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2023-10-01T09:00:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2023-10-01T17:00:00Z"
}
}
}
コンディション要素を使用するメリット
• セキュリティ強化:アクセスを特定の条件に制限することで、不正アクセスのリスクを低減します。
• 柔軟性:組織のポリシーやビジネス要件に合わせて、アクセス制御を詳細に設定できます。
• コンプライアンス対応:特定の規制や標準に準拠したアクセス制御が可能になります。