

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# IAM 권한 구성
<a name="data-api-iam"></a>

Amazon Redshift는 `AmazonRedshiftDataFullAccess` 관리형 정책을 제공합니다. 이 정책은 Amazon Redshift Data API 작업에 대한 전체 액세스 권한을 제공합니다. 이 정책은 또한 Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹을 인증하고 이에 액세스하는 데 필요한 특정 Amazon Redshift, AWS Secrets Manager 및 IAM API 작업에 대한 범위 액세스를 허용합니다.

특정 리소스에 대한 액세스를 허용하는 자체 IAM 정책을 생성할 수도 있습니다. 정책을 생성하려면 `AmazonRedshiftDataFullAccess` 정책을 시작 템플릿으로 사용합니다. 정책을 생성한 후에는 해당 정책을 Data API에 액세스해야 하는 각 사용자에게 추가합니다.

사용자와 연결된 IAM 정책의 다음과 같은 요구 사항을 고려합니다.
+ AWS Secrets Manager를 사용하여 인증하는 경우 정책이 `secretsmanager:GetSecretValue` 작업을 사용하여 `RedshiftDataFullAccess` 키로 태그가 지정된 비밀을 검색하도록 허용하는지 확인합니다.
+ 임시 보안 인증 정보를 사용하여 클러스터에 인증하는 경우 정책이 클러스터의 모든 데이터베이스에 대해 데이터베이스 사용자 이름 `redshift_data_api_user`에 `redshift:GetClusterCredentials` 작업을 사용하도록 허용하는지 확인합니다. 이 사용자 이름은 데이터베이스에 이미 생성되어 있어야 합니다.
+ 임시 보안 인증 정보를 사용하여 서버리스 작업 그룹에 인증하는 경우 정책이 `RedshiftDataFullAccess` 키로 태깅된 작업 그룹을 가져오는 `redshift-serverless:GetCredentials` 작업의 사용을 허용하는지 확인합니다. 데이터베이스 사용자는 소스 AWS Identity and Access Management(IAM) 아이덴티티에 일대일로 매핑됩니다. 예를 들어 사용자 sample\$1user는 데이터베이스 사용자 `IAM:sample_user`로 매핑되고 IAM 역할 sample\$1role은 `IAMR:sample_role`로 매핑됩니다. 다양한 IAM 아이덴티티에 대한 자세한 내용은 IAM 사용 설명서에서 [IAM 자격 증명(사용자, 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)을 참조하세요.
+ IAM 작업 `redshift-data:GetStatementResult`는 `GetStatementResult` 및 `GetStatementResultV2` API 작업 모두에 대한 액세스를 허용합니다.

다음 링크는 *IAM User Guide*에서 AWS Identity and Access Management에 대한 자세한 정보를 제공합니다.
+ IAM 역할 생성에 대한 자세한 내용은 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)을 참조하세요.
+ IAM 정책 생성에 대한 자세한 내용은 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.
+ 사용자에게 IAM 정책 추가에 대한 자세한 내용은 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

## 다른 계정에서 소유하고 있는 클러스터에서 쿼리 실행
<a name="data-api-run-query-on-others-cluster"></a>

다른 계정이 소유한 클러스터에서 쿼리를 실행하려면 소유 계정이 호출 계정에서 Data API가 수임할 수 있는 IAM 역할을 제공해야 합니다. 예를 들어 계정 B가 계정 A가 액세스해야 하는 클러스터를 소유하고 있다고 가정합니다. 계정 B는 AWS 관리형 정책 `AmazonRedshiftDataFullAccess`를 계정 B의 IAM 역할에 연결할 수 있습니다. 그런 다음 계정 B는 다음과 같은 신뢰 정책을 사용하여 계정 A를 신뢰합니다.``

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/someRoleA"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

마지막으로 계정 A IAM 역할은 계정 B IAM 역할을 수임할 수 있어야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## AWS 계정의 Redshift Serverless 작업 그룹 및 Amazon Redshift 클러스터로 리소스를 제한하는 IAM 역할 지정
<a name="data-api-restrict-to-account"></a>

ID 기반 정책에서 리소스 ARN을 지정하여 AWS 계정의 Redshift Serverless 작업 그룹 및 Amazon Redshift 클러스터에 대한 액세스 권한을 제어할 수 있습니다. 이 예제는 지정된 AWS 계정의 작업 그룹 및 클러스터에만 Data API에 액세스할 수 있는 정책을 만드는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## SQL 문 정보에 대한 액세스 권한을 문 소유자로만 제한하는 IAM 정책 구성
<a name="data-api-restrict-to-statement-owner"></a>

기본적으로 Amazon Redshift Data API는 `ExecuteStatement` 및 `BatchExecuteStatement` 직접 호출 시 사용되는 IAM 역할을 SQL 문의 소유자로 취급합니다. 역할을 맡을 수 있는 사람은 누구나 결과를 포함하여 SQL 문에 대한 정보에 액세스할 수 있습니다. IAM 역할 세션에 대한 SQL 문 정보 액세스 권한을 특정 소유자로 제한하려면 `redshift-data:statement-owner-iam-userid: "${aws:userid}"` 조건을 추가하세요. 다음 IAM 정책은 액세스를 제한합니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`CancelStatement`, `DescribeStatement`, `GetStatementResult`, `ListStatements`와 함께 `statement-owner-iam-userid` 조건을 사용할 수 있습니다. 자세한 내용은 [Amazon Redshift Data API에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)을 참조하세요.

## SQL 결과에 대한 액세스 권한을 세션 소유자로만 제한하는 IAM 정책 구성
<a name="data-api-restrict-session-owner"></a>

기본적으로 Amazon Redshift Data API는 `ExecuteStatement` 및 `BatchExecuteStatement` 직접 호출 시 사용되는 IAM 역할을 SQL 문을 실행하는 데이터베이스 세션의 소유자로 취급합니다. 역할을 맡을 수 있는 사람은 누구나 데이터베이스 세션에 쿼리를 제출할 수 있습니다. 특정 소유자와의 IAM 역할 세션에 대한 세션 액세스를 제한하려면 ` redshift-data:session-owner-iam-userid: "${aws:userid}"` 조건을 추가하세요. 다음 IAM 정책은 액세스를 제한합니다.

다음 IAM 정책은 세션 소유자만 문 결과를 얻을 수 있도록 허용합니다. `session-owner-iam-userid` 조건은 리소스 액세스 권한을 지정된 `userid`로 제한하는 데 사용됩니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`ExecuteStatement`, `BatchExecuteStatement`와 함께 `session-owner-iam-userid` 조건을 사용할 수 있습니다. 자세한 내용은 [Amazon Redshift Data API에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)을 참조하세요.