IAM ポリシーでのタグの使用 - AWS IoT Core

IAM ポリシーでのタグの使用

AWS IoT API アクションに対して使用する IAM ポリシーで、タグベースのリソースレベルアクセス許可を適用することができます。これにより、ユーザーがどのリソースを作成、変更、または使用できるかを制御しやすくなります。IAM ポリシーの以下の条件コンテキストのキーと値とともに Condition 要素 (Condition ブロックとも呼ばれる) を使用して、リソースのタグに基づいてユーザーアクセス (アクセス許可) を制御できます。

  • 特定のタグを持つリソースに対してユーザーアクションを許可または拒否するには、aws:ResourceTag/tag-key: tag-value を使用します。

  • タグが許可されているリソースを作成または変更する API リクエストを作成する場合に、特定のタグが使用されている (または、使用されていない) ことを要求するには、aws:RequestTag/tag-key: tag-value を使用します。

  • タグが許可されているリソースを作成または変更する API リクエストを作成する場合に、特定の一連のタグが使用されている (または、使用されていない) ことを要求するには、aws:TagKeys: [tag-key, ...] を使用します。

注記

IAM ポリシーの条件コンテキストのキーと値は、タグ付け可能なリソースの ID が必須パラメータである AWS IoT アクションにのみ適用されます。例えば、DescribeEndpoint を使用しても、このリクエストではタグ付け可能なリソース (モノのグループ、モノのタイプ、トピックルール、ジョブ、またはセキュリティプロファイル) が参照されていないため、条件コンテキストのキーと値に基づいて許可または拒否されることはありません。AWS IoTタグ付け可能なリソースとそれらがサポートする条件キーについての詳細は、AWS IoT用 アクション、リソース、条件キーを参照してください。

タグの使用の詳細については、[AWS Identity and Access ManagementUser Guide](ユーザーガイド)の[Controlling Access Using Tags](タグを使用したアクセスの制御)を参照してください。そのガイドの[IAM JSON Policy Reference](IAM JSON ポリシーリファレンス)セクションには、IAM での JSON ポリシーの要素、変数、および評価ロジックの詳細な構文、説明、および例が記載されています。

次のポリシー例では、ThingGroup アクションにタグベースの 2 つの制約が適用されています。このポリシーによって制限されている IAM ユーザー

  • モノグループにタグ「env=prod」を作成することはできません (この例の"aws:RequestTag/env" : "prod"の行を参照)。

  • 既存のタグ "env=prod" を持つモノグループに対しては、変更またはアクセスできません (この例の "aws:ResourceTag/env" : "prod" の行を参照)。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "iot:CreateThingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/env": "prod" } } }, { "Effect": "Deny", "Action": [ "iot:CreateThingGroup", "iot:DeleteThingGroup", "iot:DescribeThingGroup", "iot:UpdateThingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/env": "prod" } } }, { "Effect": "Allow", "Action": [ "iot:CreateThingGroup", "iot:DeleteThingGroup", "iot:DescribeThingGroup", "iot:UpdateThingGroup" ], "Resource": "*" } ] }

次のように、タグ値を1 つのリストとして指定して、1 つのタグキーに対して複数のタグ値を指定することもできます。

"StringEquals" : { "aws:ResourceTag/env" : ["dev", "test"] }
注記

タグに基づいてリソースへのユーザーのアクセスを許可または拒否する場合は、ユーザーが同じリソースに対してそれらのタグを追加または削除することを明示的に拒否することを検討する必要があります。そうしないと、ユーザーはそのリソースのタグを変更することで、制限を回避してリソースにアクセスできてしまいます。