

# 외부 Hive 메타스토어용 Athena 데이터 커넥터에 대한 액세스 허용
<a name="hive-metastore-iam-access"></a>

이 주제의 권한 정책 예제에서는 필요한 허용된 작업과 해당 작업이 허용되는 리소스를 보여줍니다. IAM 자격 증명에 유사한 권한 정책을 연결하기 전에 이러한 정책을 신중하게 검토하고 요구 사항에 따라 수정합니다.
+  [Example Policy to Allow an IAM Principal to Query Data Using Athena Data Connector for External Hive Metastore](#hive-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena Data Connector for External Hive Metastore](#hive-creating-iam) 

**Example – IAM 보안 주체가 외부 Hive 메타스토어용 Athena 데이터 커넥터를 사용하여 데이터를 쿼리할 수 있도록 허용합니다.**  
다음 정책은 [AWS 관리형 정책: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) 외에 Athena 작업에 대한 전체 액세스 권한을 부여하는 IAM 보안 주체에도 연결됩니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:layer:MyAthenaLambdaLayer:*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"
        }
    ]
}
```


**권한에 대한 설명**  

| 허용된 작업 | 설명 | 
| --- | --- | 
|  <pre>"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:PutObject",<br />"s3:ListMultipartUploadParts",<br />"s3:AbortMultipartUpload"</pre>  |  `s3` 작업을 사용하면 `"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"`으로 지정된 리소스를 읽고 쓸 수 있습니다. 여기서 *MyLambdaSpillLocation*은 호출되는 Lambda 함수의 구성에 지정된 유출 버킷(spill bucket)을 식별합니다. *arn:aws:lambda:\$1:*MyAWSAcctId*:layer:*MyAthenaLambdaLayer*:\$1* 리소스 식별자는 배포 시 함수 아티팩트 크기를 줄이기 위해 Athena 계층을 사용하여 사용자 지정 런타임 종속성을 만드는 경우에만 필요합니다. 마지막 위치에 있는 `*`은 계층 버전의 와일드카드입니다.  | 
|  <pre>"lambda:GetFunction",<br />"lambda:GetLayerVersion",<br />"lambda:InvokeFunction"</pre>  | 쿼리가 Resource 블록에 지정된 AWS Lambda 함수를 호출할 수 있습니다. arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction을 예로 들 수 있습니다. 여기서 MyAthenaLambdaFunction은 호출할 Lambda 함수의 이름을 지정합니다. 예제와 같이 여러 함수를 지정할 수 있습니다. | 

**Example – IAM 보안 주체가 외부 Hive 메타스토어용 Athena 데이터 커넥터를 생성할 수 있도록 허용합니다.**  
다음 정책은 [AWS 관리형 정책: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) 외에 Athena 작업에 대한 전체 액세스 권한을 부여하는 IAM 보안 주체에도 연결됩니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:ListFunctions",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion",
                "lambda:UpdateFunctionConfiguration",
                "lambda:PutFunctionConcurrency",
                "lambda:DeleteFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: function: MyAthenaLambdaFunctionsPrefix*"
        }
    ]
}
```
 **권한에 대한 설명**   
쿼리가 `Resource` 블록에 지정된 AWS Lambda 함수에 대한 AWS Lambda 함수를 호출할 수 있습니다. `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction`을 예로 들 수 있습니다. 여기서 *MyAthenaLambdaFunction*은 호출되는 Lambda 함수의 이름을 지정합니다. 예제와 같이 여러 함수를 지정할 수 있습니다.