サービスコントロールポリシー (SCP) とタグポリシーを使用して、AWS Organizations メンバーアカウントのユーザーが AWS リソースを作成できないようにしたいです。
簡単な説明
タグポリシーを使用して、組織の複数メンバーアカウントにわたりサポートされている AWS リソースでのタグを標準化します。デフォルトでは、タグキーの大文字と小文字は親ポリシーから継承されます。強制タグキーで大文字と小文字の区別を定義するには、[タグキーに上記で指定した大文字と小文字を使用する] を選択します。親ポリシーがないか、大文字と小文字の区別を有効にしていない場合は、小文字のみのタグキーは準拠していると見なされます。
リソースの作成時、タグポリシーは、定義されたタグ値と大文字と小文字に一致する準拠タグキーをチェックします。ただし、ユーザーにより標準化されたタグキーを変更したり、準拠タグを使用せずにリソースを作成したりすることは可能です。SCP を使用してメンバーアカウント内のエンティティのアクセス許可を制限します。
解決策
タグポリシーを使用して、新規または既存のリソースに非準拠のタグが付与されないようにする
次のポリシーでは、ユーザーは Amazon Elastic Compute Cloud (Amazon EC2) の tag_value を Preprod または Production にのみ変更できます。
{
"tags": {
"Environment": {
"tag_key": {
"@@assign": "Environment"
},
"tag_value": {
"@@assign": [
"Preprod",
"Production"
]
},
"enforced_for": {
"@@assign": [
"ec2:instance"
]
}
}
}
}
上記のポリシーでは、Dev オプションは定義されていないため、ユーザーは tag_value に Dev を入力することはできません。また、ポリシーに大文字小文字区別のオプションが含まれている場合、ユーザーは Environment を environment に変更することはできません。
SCP を使用して、準拠タグキーがないインスタンスリソースの作成を停止する
次の SCP では、ユーザーが RunInstances API 操作を呼び出すときに、インスタンスのメタデータに準拠タグキーを含めることを要求します。この SCP をアタッチしたユーザーが準拠タグを使用してリソースを作成すると、そのユーザーはタグキーと値のペアを追加、変更、削除することはできなくなります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUpdatingOrDeletingAnyTagOnInstanceWithAnAttachedCopliantTags",
"Effect": "Deny",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Environment": [
"Preprod",
"Production"
]
},
"Null": {
"aws:ResourceTag/Environment": "false"
}
}
},
{
"Sid": "DenyRunInstancesWithoutOneofTheCompliantTagKeys",
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"Null": {
"aws:RequestTag/Environment": "true"
}
}
}
]
}
注: **RunInstances ** API の呼び出し時には、すべての必要なタグを渡す必要があります。
関連情報
AWS Organizations のサービスコントロールポリシーと IAM ポリシーの相違点を教えてください
タグポリシーの構文