태그를 사용하여 API Gateway REST API 리소스에 대한 액세스 제어
AWS Identity and Access Management 정책의 조건은 API Gateway 리소스에 대한 권한을 지정하는 데 사용하는 구문의 일부입니다. IAM 정책 지정에 대한 자세한 내용은 IAM 권한을 사용하여 REST API에 대한 액세스 제어 단원을 참조하세요. API Gateway에서는 리소스에 태그가 있을 수 있고 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성하면 태그 조건 키를 사용하여 다음을 제어할 수 있습니다.
-
API Gateway 리소스에 이미 있는 태그를 기반으로 어떤 사용자가 해당 리소스에 대해 작업을 수행할 수 있는지 여부
-
작업의 요청에서 전달될 수 있는 태그
-
요청에서 특정 키를 사용할 수 있는지 여부를 통제합니다.
속성 기반 액세스 제어 태그를 사용하면 API 수준의 제어를 보다 세부적으로 제어할 수 있을 뿐만 아니라, 리소스 기반 액세스 제어보다 동적으로 제어할 수 있습니다. 요청에서 제공된 태그(요청 태그) 또는 작업 중인 리소스에 대한 태그(리소스 태그)를 기반으로 작업을 허용하거나 허용하지 않는 IAM 정책을 생성할 수 있습니다. 일반적으로 리소스 태그는 이미 존재하는 리소스에 대한 태그입니다. 요청 태그는 새 리소스를 생성할 때 사용되는 태그입니다.
태그 조건 키의 전체 구문 및 의미는 IAM 사용 설명서의 태그를 사용한 액세스 제어를 참조하십시오.
다음 예제에서는 API Gateway 사용자에 정책의 태그 조건을 지정하는 방법을 설명합니다.
리소스 태그 기반 작업 한도 지정
다음 정책 예에서는 해당 리소스에 값이 prod
인 태그 Environment
가 없는 경우 모든 리소스에서 모든 작업을 수행할 수 있는 권한을 사용자에게 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "prod" } } } ] }
리소스 태그 기반 작업 허용
다음 정책 예에서는 해당 리소스에 값이 Development
인 태그 Environment
가 있는 경우 사용자가 API Gateway 리소스에서 모든 작업을 수행할 수 있도록 허용합니다. Deny
문은 사용자가 Environment
태그의 값을 변경하지 못하도록 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConditionallyAllow", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Environment": "Development" } } }, { "Sid": "AllowTagging", "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/tags/*" ] }, { "Sid": "DenyChangingTag", "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:*::/tags/*" ], "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "Environment" } } } ] }
태그 지정 작업 거부
다음 정책 예에서는 사용자가 태그 변경을 제외한 모든 API Gateway 작업을 수행할 수 있도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ], }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "arn:aws:apigateway:*::/tags*", } ] }
태그 지정 작업 허용
다음 정책 예에서는 사용자가 모든 API Gateway 리소스를 가져오고 해당 리소스에 대한 태그를 변경할 수 있도록 허용합니다. 리소스의 태그를 가져오려면 사용자에게 해당 리소스에 대한 GET
권한이 있어야 합니다. 리소스의 태그를 업데이트하려면 사용자에게 해당 리소스에 대한 PATCH
권한이 있어야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": [ "arn:aws:apigateway:*::/tags/*", ] }, { "Effect": "Allow", "Action": [ "apigateway:GET", "apigateway:PATCH", ], "Resource": [ "arn:aws:apigateway:*::*", ] } ] }