

# 배치 작업에 대한 권한 부여
<a name="batch-ops-iam-role-policies"></a>

S3 배치 작업을 생성 및 실행하기 전에, 필요한 권한을 부여해야 합니다. Amazon S3 배치 작업을 생성하려면 `s3:CreateJob` 사용자 권한이 필요합니다. 작업을 생성한 동일한 엔터티에는 작업에 대해 지정된 AWS Identity and Access Management(IAM) 역할을 Batch Operations에 전달하는 `iam:PassRole` 권한도 있어야 합니다.

다음 섹션에서는 IAM 역할 생성 및 정책 연결에 대한 정보를 제공합니다. IAM 리소스 지정에 대한 일반적인 정보는 *IAM 사용 설명서*의 [IAM JSON 정책 요소: 리소스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)를 참조하세요.

**Topics**
+ [S3 배치 작업 IAM 역할 생성](#batch-ops-iam-role-policies-create)
+ [권한 연결 정책](#batch-ops-iam-role-policies-perm)

## S3 배치 작업 IAM 역할 생성
<a name="batch-ops-iam-role-policies-create"></a>

Amazon S3에는 사용자를 대신해 S3 배치 작업을 수행할 권한이 있어야 합니다. AWS Identity and Access Management(IAM) 역할을 통해 이러한 권한을 부여합니다. S3 배치 작업을 생성할 때 작업을 사용할 IAM 역할을 지정합니다. 이는 기존 IAM 역할일 수 있습니다. 또는 Amazon S3 콘솔을 사용하여 작업을 생성하는 경우 Amazon S3가 자동으로 생성하는 IAM 역할일 수 있습니다.

Amazon S3가 IAM 역할을 자동으로 생성하도록 선택하면 신뢰 및 권한 정책이 자동으로 생성되어 역할에 연결됩니다. 신뢰 정책은 S3 Batch Operations 서비스 보안 주체(`batchoperations.s3.amazonaws.com`)가 역할을 수임하도록 허용합니다. 권한 정책은 작업에 대해 지정한 설정에 따라 작업을 실행하는 데 필요한 모든 작업을 허용합니다. 예를 들어 AWS 계정의 한 버킷에서 다른 버킷으로 객체를 복사하도록 작업을 구성하는 경우 권한 정책은 `s3:GetObject` 및 `s3:PutObject`와 같은 작업을 허용합니다. 작업을 제출하기 전에 역할에 대한 신뢰 및 권한 정책을 검토할 수 있습니다. 이 옵션은 Amazon S3 콘솔을 사용하여 작업을 생성하고 필터를 사용하거나 복제 구성을 기반으로 하는 S3 생성 객체 목록을 사용하도록 작업을 구성하는 경우에만 사용할 수 있습니다. 작업을 제출하면 IAM 역할이 계정에 유지됩니다. 그런 다음 동일한 작업을 수행하는 후속 작업에 다시 사용하거나 작업 실행이 완료되면 삭제할 수 있습니다.

IAM 역할을 수동으로 생성하려는 경우 이 섹션의 정책 예제를 통해 역할을 생성할 수 있습니다. IAM 역할 생성 및 구성에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하세요. S3 리소스 유형별 S3 API 작업 권한에 대한 내용은 [Amazon S3 API 작업에 필요한 권한](using-with-s3-policy-actions.md) 섹션을 참조하세요. 추가 예제는 [작업 태그를 사용하여 Batch Operations에 대한 권한 제어](batch-ops-job-tags-examples.md) 및 [S3 배치 작업을 사용하여 객체 복사](batch-ops-examples-copy.md) 섹션을 참조하세요.

IAM 정책에서 조건 키를 사용하여 S3 배치 작업 건에 대한 액세스 권한을 필터링할 수도 있습니다. Amazon S3에 사용되는 조건 키의 전체 목록과 자세한 내용은 **서비스 승인 참조에서 [Amazon S3에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)를 참조하세요.

S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 [Amazon S3 API 작업에 필요한 권한](using-with-s3-policy-actions.md) 섹션을 참조하세요.

다음 비디오에는 Amazon S3 콘솔을 사용하여 Batch Operations에 대한 IAM 권한을 설정하는 방법이 포함되어 있습니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


### 신뢰 정책
<a name="batch-ops-iam-role-policies-trust"></a>

S3 배치 작업 서비스 보안 주체가 IAM 역할을 맡도록 허용하려면 다음 신뢰 정책을 역할에 연결합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"batchoperations.s3.amazonaws.com"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}
```

------

## 권한 연결 정책
<a name="batch-ops-iam-role-policies-perm"></a>

작업(operation) 유형에 따라 다음 정책 중 하나를 연결할 수 있습니다.

사용 권한을 구성하기 전에 다음 사항에 유의하세요.
+ 작업(operation)과 상관없이 Amazon S3는 S3 버킷에서 매니페스트 객체를 읽고 선택적으로 버킷에 보고서를 쓸 수 있는 권한이 필요합니다. 따라서 다음의 모든 정책은 이러한 권한을 포함합니다.
+ Amazon S3 인벤토리 보고서 매니페스트의 경우 S3 배치 작업에서는 manifest.json 객체 및 연결된 모든 CSV 데이터 파일을 읽을 수 있는 권한이 필요합니다.
+ 객체의 버전 ID를 지정할 때는 `s3:GetObjectVersion`과 같은 버전 관련 권한만 필요합니다.
+ 암호화된 객체에 대해 S3 배치 작업을 실행하는 경우 IAM 역할에도 해당 객체를 암호화하는 데 사용되는 AWS KMS 키에 대한 액세스 권한이 있어야 합니다.
+ AWS KMS로 암호화된 인벤토리 보고서 매니페스트를 제출하는 경우 IAM 정책에 manifest.json 객체 및 연결된 모든 CSV 데이터 파일에 대한 `"kms:Decrypt"` 및 `"kms:GenerateDataKey"` 권한이 포함되어 있어야 합니다.
+ 액세스 제어 목록(ACL)이 활성화되어 있고 다른 AWS 계정에 있는 버킷의 매니페스트를 Batch Operations 작업에서 생성하는 경우, 배치 작업에 대해 구성된 IAM 역할의 IAM 정책에서 `s3:PutObjectAcl` 권한을 부여해야 합니다. 이 권한을 포함하지 않은 경우 배치 작업은 `Error occurred when preparing manifest: Failed to write manifest` 오류와 함께 실패합니다.

### 객체 복사: PutObject
<a name="batch-ops-put-copy-object-policy"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket",
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### 객체 태그 지정 대체: PutObjectTagging
<a name="batch-ops-put-object-tagging-policy"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObjectTagging",
        "s3:PutObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### 객체 태그 지정 삭제: DeleteObjectTagging
<a name="batch-ops-delete-object-tagging-policy"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### 액세스 제어 목록 대체: PutObjectAcl
<a name="batch-ops-put-object-acl-policy"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### 객체 복원: RestoreObject
<a name="batch-ops-initiate-restore-policy"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
          "s3:RestoreObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Object Lock 보존 적용: PutObjectRetention
<a name="batch-ops-put-object-lock-policy"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention",
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Object Lock 법적 보존 적용: PutObjectLegalHold
<a name="batch-ops-put-object-legal-hold-policy"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:PutObjectLegalHold",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### 기존 객체 복제: S3 생성 매니페스트를 사용한 InitiateReplication
<a name="batch-ops-batch-replication-policy"></a>

S3 생성 매니페스트를 사용 및 저장하는 경우 이 정책을 사용합니다. 기존 객체 복제에 Batch Operations를 사용하는 방법에 대한 자세한 내용은 [배치 복제를 사용한 기존 객체 복제](s3-batch-replication-batch.md) 섹션을 참조하세요.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:PutInventoryConfiguration"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
         ]
      }
   ]
}
```

------

### 기존 객체 복제: 사용자 매니페스트를 사용한 InitiateReplication
<a name="batch-ops-batch-replication-policy-user"></a>

사용자 제공 매니페스트를 사용하는 경우 이 정책을 사용합니다. 기존 객체 복제에 Batch Operations를 사용하는 방법에 대한 자세한 내용은 [배치 복제를 사용한 기존 객체 복제](s3-batch-replication-batch.md) 섹션을 참조하세요.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
         ]
      }
   ]
}
```

------

### 체크섬 계산: `GetObject`, `GetObjectVersion`, `RestoreObject` 및 `PutObject` 허용
<a name="batch-ops-compute-object-checksum-policies"></a>

**체크섬 계산** 작업을 S3 Batch Operations과 함께 사용하려는 경우 이 정책을 사용합니다. 저장된 데이터의 바이트를 가져오고 읽으려면 `GetObject`, `GetObjectVersion` 및 `RestoreObject`에 대한 권한이 필요합니다. user input placeholders를 사용자의 정보로 대체합니다. **체크섬 계산**에 대한 자세한 내용은 [Amazon S3의 저장 데이터에 대한 객체 무결성 확인](checking-object-integrity-at-rest.md) 섹션을 참조하세요.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:RestoreObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket3/*"
      ]
    }
  ]
}
```

### 객체 암호화 업데이트
<a name="batch-ops-update-encryption-policies"></a>

Batch Operations가 매니페스트를 읽고, 객체의 암호화 유형을 업데이트하고, 완료 보고서를 작성하도록 허용하려면 다음 권한 정책을 연결해야 합니다. 이 권한 정책을 사용하려면 *`user input placeholders`*를 사용자의 정보로 대체합니다. 이 작업 사용 및 IAM 위탁자가 사용하는 역할에 연결해야 하는 권한에 대한 자세한 내용은 [객체 암호화 업데이트](batch-ops-update-encryption.md) 섹션을 참조하세요.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        }
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```