

# 태그 지정 및 액세스 제어 정책
<a name="tagging-and-policies"></a>

또한 권한 정책(버킷 및 사용자 정책)을 사용하여 객체 태그 지정과 관련된 권한을 관리할 수 있습니다. 정책 작업에 대해서는 다음 주제를 참조하십시오.
+  [객체 작업](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects) 
+  [버킷 작업](security_iam_service-with-iam.md#using-with-s3-actions-related-to-buckets)

객체 태그를 통해 권한 관리에 대한 액세스 제어를 세부적으로 수행할 수 있습니다. 객체 태그를 바탕으로 조건적인 권한을 부여할 수 있습니다. Amazon S3에서는 객체 태그 기반의 조건부 권한을 부여하는 데 사용할 수 있는 다음과 같은 조건 키를 지원합니다.
+ `s3:ExistingObjectTag/{{<tag-key>}}` - 이 조건 키를 사용하여 기존 객체 태그에 특정 태그 키 및 값이 있다는 것을 확인합니다.
**참고**  
`PUT Object` 및 `DELETE Object` 작업에 대한 권한을 부여할 때 이 조건 키는 지원되지 않습니다. 즉 기존 태그에 기반을 둔 객체를 삭제 또는 덮어쓸 수 있는 권한을 사용자에게 부여하거나 거부할 수 있는 정책을 생성할 수 없습니다.
+ `s3:RequestObjectTagKeys` - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키를 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST 객체 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.
+ `s3:RequestObjectTag/{{<tag-key>}}` - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키 및 값을 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST Bucket 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.

Amazon S3 서비스별 조건 키 전체 목록은 [조건 키를 사용한 버킷 정책 예시](amazon-s3-policy-keys.md) 단원을 참조하세요. 다음 권한 정책들은 객체 태그 지정을 통해 어떻게 세부적인 액세스 권한 관리가 가능한지 보여줍니다.

**Example 1: 사용자가 특정 태그 및 키 값이 있는 객체만 읽도록 허용**  
다음 권한 정책은 `environment: production` 태그 키 및 값이 있는 객체만 사용자가 읽을 수 있도록 제한합니다. 이 정책은 `s3:ExistingObjectTag` 조건 키를 사용하여 태그 키 및 값을 지정합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
  {
    "Principal": {
      "AWS": [
        "arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
      ]
    },
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:GetObjectVersion"],
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringEquals": 
        {"s3:ExistingObjectTag/environment": "production"}
    }
  }
  ]
}
```

**Example 2. 사용자가 추가할 수 있는 객체 태그 키 제한**  
다음 권한 정책은 사용자에게 `s3:PutObjectTagging` 작업을 수행할 수 있는 권한을 부여합니다. 이에 따라 사용자는 기존 객체에 태그를 붙일 수 있습니다. 조건이 `s3:RequestObjectTagKeys` 조건 키를 사용하여 `Owner`, `CreationDate` 등의 허용 태그 키 세트를 지정합니다. 자세한 내용은 *IAM 사용 설명서*의 [다수의 키 또는 값을 사용하는 조건 생성](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html)을 참조하십시오.  
요청에 지정된 모든 태그 키가 인증된 태그 키임을 정책이 보장합니다. 지정된 값 중 최소 1개가 요청에 존재함을 조건 내의 `ForAnyValue` 한정자가 보장합니다.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

**Example 3. 사용자가 객체 태그를 추가할 수 있게 하려면 특정 태그 키 및 값 필요**  
다음 권한 정책은 `s3:PutObjectTagging` 작업을 수행할 수 있는 권한을 사용자에게 부여하여, 사용자가 기존 객체에 태그를 추가할 수 있게 합니다. 이 조건은 값이 `{{X}}`로 설정된 (`{{Project}}` 등의) 특정 태그 키를 포함하도록 사용자에게 요구합니다.    
****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/{{Project}}": "{{X}}"
        }
      }
    }
  ]
}
```

