

# タグ付けとアクセスコントロールポリシー
<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 Object リクエストを使用してオブジェクトにタグを付けるときです。
+ `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)」を参照してください。  
このポリシーは、リクエストで指定されたすべてのタグキーが承認されたタグキーであることを保証します。条件の `ForAnyValue` 修飾子によって、指定したキーの少なくとも 1 つがリクエストに存在することが保証されます。    
****  

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

