

# 태그를 사용하여 API Gateway REST API 리소스에 대한 액세스 제어
<a name="apigateway-tagging-iam-policy"></a>

AWS Identity and Access Management 정책의 조건은 API Gateway 리소스에 대한 권한을 지정하는 데 사용하는 구문의 일부입니다. IAM 정책 지정에 대한 자세한 내용은 [IAM 권한을 사용하여 REST API에 대한 액세스 제어](permissions.md) 단원을 참조하세요. API Gateway에서는 리소스에 태그가 있을 수 있고 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성하면 태그 조건 키를 사용하여 다음을 제어할 수 있습니다.
+ API Gateway 리소스에 이미 있는 태그를 기반으로 어떤 사용자가 해당 리소스에 대해 작업을 수행할 수 있는지 여부
+ 작업의 요청에서 전달될 수 있는 태그
+ 요청에서 특정 키를 사용할 수 있는지 여부를 통제합니다.

속성 기반 액세스 제어 태그를 사용하면 API 수준의 제어를 보다 세부적으로 제어할 수 있을 뿐만 아니라, 리소스 기반 액세스 제어보다 동적으로 제어할 수 있습니다. 요청에서 제공된 태그(요청 태그) 또는 작업 중인 리소스에 대한 태그(리소스 태그)를 기반으로 작업을 허용하거나 허용하지 않는 IAM 정책을 생성할 수 있습니다. 일반적으로 리소스 태그는 이미 존재하는 리소스에 대한 태그입니다. 요청 태그는 새 리소스를 생성할 때 사용되는 태그입니다.

태그 조건 키의 전체 구문 및 의미는 *IAM 사용 설명서*의 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하십시오.

다음 예제에서는 API Gateway 사용자에 정책의 태그 조건을 지정하는 방법을 설명합니다.

## 리소스 태그 기반 작업 한도 지정
<a name="apigateway-tagging-iam-policy-example-1"></a>

다음 정책 예에서는 해당 리소스에 값이 `prod`인 태그 `Environment`가 없는 경우 모든 리소스에서 모든 작업을 수행할 수 있는 권한을 사용자에게 부여합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "apigateway:*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": [
        "apigateway:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "prod"
        }
      }
    }
  ]
}
```

------

## 리소스 태그 기반 작업 허용
<a name="apigateway-tagging-iam-policy-example-3"></a>

다음 정책 예에서는 해당 리소스에 값이 `Development`인 태그 `Environment`가 있는 경우 사용자가 API Gateway 리소스에서 모든 작업을 수행할 수 있도록 허용합니다. `Deny` 문은 사용자가 `Environment` 태그의 값을 변경하지 못하도록 합니다.

------
#### [ JSON ]

****  

```
{
  "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"
        }
      }
    }
  ]
}
```

------

## 태그 지정 작업 거부
<a name="deny-tagging"></a>

다음 정책 예에서는 사용자가 태그 변경을 제외한 모든 API Gateway 작업을 수행할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "apigateway:*"
            ],
            "Resource": "arn:aws:apigateway:*::/tags*"
        }
    ]
}
```

------

## 태그 지정 작업 허용
<a name="allow-tagging"></a>

다음 정책 예에서는 사용자가 모든 API Gateway 리소스를 가져오고 해당 리소스에 대한 태그를 변경할 수 있도록 허용합니다. 리소스의 태그를 가져오려면 사용자에게 해당 리소스에 대한 `GET` 권한이 있어야 합니다. 리소스의 태그를 업데이트하려면 사용자에게 해당 리소스에 대한 `PATCH` 권한이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "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:*::*"
            ]
        }
    ]
}
```

------