

 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/)을 참조하세요.

# AWS Secrets Manager를 사용하여 Amazon Redshift 관리자 암호를 관리하는 방법
<a name="redshift-secrets-manager-integration"></a>

 Amazon Redshift는 AWS Secrets Manager와 통합하여 암호화된 보안 암호 내에서 관리자 보안 인증 정보를 생성하고 관리할 수 있습니다. AWS Secrets Manager를 사용하면 관리자 암호를 API 호출로 대체하여 필요할 때 프로그래밍 방식으로 보안 암호를 검색할 수 있습니다. 하드 코딩된 보안 인증 정보 대신 암호를 사용하면 보안 인증 정보가 노출되거나 손상될 위험이 줄어듭니다. AWS Secrets Manager에 대한 자세한 내용은 [https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하세요.

다음 작업 중 하나를 수행할 때 Amazon Redshift가 AWS Secrets Manager를 사용하여 관리자 암호를 관리하도록 지정할 수 있습니다.
+ 프로비저닝된 클러스터 또는 서버리스 네임스페이스 생성
+ 프로비저닝된 클러스터 또는 서버리스 네임스페이스의 관리자 자격 증명 편집, 업데이트 또는 수정
+ 스냅샷에서 클러스터 또는 서버리스 네임스페이스 복원

Amazon Redshift가 AWS Secrets Manager에서 관리자 암호를 관리하도록 지정하면 Amazon Redshift 가 암호를 생성하여 Secrets Manager에 저장합니다. AWS Secrets Manager에서 직접 보안 암호에 액세스하여 관리자 사용자의 보안 인증 정보를 검색할 수 있습니다. 선택적으로, 다른 AWS 계정에서 보안 암호에 액세스해야 하는 경우 고객 관리형 키를 지정하여 보안 암호를 암호화할 수 있습니다. AWS Secrets Manager에서 제공하는 KMS 키를 사용할 수도 있습니다.

Amazon Redshift는 보안 암호 설정을 관리하고 기본적으로 30일마다 보안 암호를 교체합니다. 언제든지 보안 암호를 수동으로 교체할 수 있습니다. AWS Secrets Manager에서 보안 암호를 관리하는 프로비저닝된 클러스터 또는 서버리스 네임스페이스를 삭제하면 보안 암호와 관련 메타데이터도 삭제됩니다.

보안 암호 관리형 보안 인증 정보를 사용하여 클러스터 또는 서버리스 네임스페이스에 연결하려면 Secrets Manager 콘솔 또는 `GetSecretValue` Secrets Manager API 호출을 사용하여 AWS Secrets Manager에서 보안 암호를 검색하면 됩니다. 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager에서 비밀 검색](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html) 및 [AWS Secrets Manager 비밀에 있는 보안 인증 정보를 사용하여 SQL 데이터베이스에 연결](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_jdbc.html)을 참조하세요.

## AWS Secrets Manager 통합에 필요한 권한
<a name="redshift-secrets-manager-integration-permissions"></a>

사용자는 AWS Secrets Manager 통합과 관련된 작업을 수행하는 데 필요한 권한이 있어야 합니다. 사용자에게 필요한 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 생성합니다. 그런 다음 해당 권한이 필요한 IAM 권한 세트 또는 역할에 이러한 정책을 연결합니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](redshift-iam-authentication-access-control.md) 섹션을 참조하세요.

Amazon Redshift가 AWS Secrets Manager에서 관리자 암호를 관리하도록 지정하는 사용자는 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
+ `secretsmanager:CreateSecret`
+ `secretsmanager:RotateSecret`
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:UpdateSecret`
+ `secretsmanager:DeleteSecret`
+ `secretsmanager:GetRandomPassword`
+ `secretsmanager:TagResource`

프로비저닝된 클러스터의 `MasterPasswordSecretKmsKeyId` 파라미터 또는 서버리스 네임스페이스의 `AdminPasswordSecretKmsKeyId` 파라미터에 KMS 키를 전달하려는 사용자는 위에 나열된 권한 외에도 다음과 같은 권한이 필요합니다.
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:CreateGrant`
+ `kms:RetireGrant`

## 관리자 보안 암호 교체
<a name="redshift-secrets-manager-integration-rotation"></a>

기본적으로 Amazon Redshift는 보안 인증 정보가 장기간 동일하게 유지되지 않도록 30일마다 보안 암호를 자동으로 교체합니다. Amazon Redshift가 관리자 암호 보안 암호를 교체하면 AWS Secrets Manager는 새 관리자 암호를 포함하도록 기존 보안 암호를 업데이트합니다. Amazon Redshift는 업데이트된 보안 암호의 암호와 일치하도록 클러스터의 관리자 암호를 변경합니다.

AWS Secrets Manager를 사용하여 예약된 교체 시점을 기다리지 않고 보안 암호를 즉시 교체할 수 있습니다. 보안 암호 교체에 대한 자세한 내용은 **AWS Secrets Manager 사용 설명서에서 [AWS Secrets Manager 보안 암호 교체](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_jdbc.html)를 참조하세요.

## Amazon Redshift와 함께 AWS Secrets Manager 사용 시 고려 사항
<a name="redshift-secrets-manager-integration-considerations"></a>

 AWS Secrets Manager를 사용하여 프로비저닝된 클러스터 또는 서버리스 네임스페이스의 관리자 보안 인증 정보를 관리할 때는 다음 사항을 고려하세요.
+  관리자 보안 인증 정보가 AWS Secrets Manager에서 관리되는 클러스터를 일시 중지해도 클러스터의 보안 암호는 삭제되지 않으며 보안 암호에 대한 요금이 계속 청구됩니다. 보안 암호는 클러스터를 삭제한 경우에만 삭제됩니다.
+  Amazon Redshift가 연결된 보안 암호를 교체하려고 할 때 클러스터가 일시 중지되면 교체가 실패합니다. 이 경우 Amazon Redshift는 자동 교체를 중지하고 클러스터를 재개한 후에도 다시 교체를 시도하지 않습니다. `secretsmanager:RotateSecret`가 계속해서 보안 암호를 자동 교체하도록 하려면 AWS Secrets Manager API 호출을 사용하여 자동 교체 일정 예약을 다시 시작해야 합니다.
+  Amazon Redshift가 연결된 보안 암호를 교체하려고 할 때 서버리스 네임스페이스에 연결된 작업 그룹이 없는 경우, 교체는 실패하고 작업 그룹을 연결한 후에도 다시 교체를 시도하지 않습니다. `secretsmanager:RotateSecret`가 계속해서 보안 암호를 자동 교체하도록 하려면 AWS Secrets Manager API 호출을 사용하여 자동 교체 일정 예약을 다시 시작해야 합니다.

# Amazon Redshift에서 Amazon 리소스 이름(ARN) 보안 암호 검색
<a name="redshift-secrets-manager-integration-retrieving-secret"></a>

Amazon Redshift 콘솔을 사용하여 AWS Secrets Manager에서 관리되는 보안 암호의 Amazon 리소스 이름(ARN)을 볼 수 있습니다. 보안 암호의 ARN이 있으면 AWS Secrets Manager를 사용하여 보안 암호에 대한 세부 정보 및 보안 암호 내에 암호화된 데이터를 볼 수 있습니다. ARN을 사용하여 보안 암호를 검색하는 방법에 대한 자세한 내용은 **AWS Secrets Manager 사용 설명서에서 [보안 암호 가져오기](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html)를 참조하세요.

**Amazon Redshift 프로비저닝 클러스터의 보안 암호에 대한 세부 정보 보기**  
Amazon Redshift 콘솔을 사용하여 다음 절차에 따라 클러스터에 대한 보안 암호의 Amazon 리소스 이름(ARN)을 확인합니다.  

1. AWS Management Console에 로그인하고 Amazon Redshift 콘솔을 엽니다.

1. **클러스터 개요** 창에서 보안 암호를 보려는 클러스터를 선택합니다.

1. **속성** 탭을 선택합니다.

1. **관리자 보안 인증 정보 ARN**에서 보안 암호의 ARN을 확인합니다. 이 ARN은 보안 암호의 식별자이며, AWS Secrets Manager에서 보안 암호의 세부 정보를 보는 데 사용할 수 있습니다.

**Amazon Redshift Serverless 네임스페이스의 보안 암호에 대한 세부 정보 보기**  
Amazon Redshift 콘솔을 사용하여 다음 절차에 따라 서버리스 네임스페이스에 대한 보안 암호의 Amazon 리소스 이름(ARN)을 확인합니다.  

1. AWS Management Console에 로그인하고 Amazon Redshift 콘솔을 엽니다.

1. **프로비저닝된 클러스터** 대시보드에서 페이지 오른쪽 상단의 **Serverless로 이동**을 선택합니다.

1. **Serverless 대시보드**에서 **네임스페이스 / 작업 그룹** 창으로 스크롤하여 보안 암호를 보려는 네임스페이스를 선택합니다.

1. **일반 정보** 창의 **관리자 보안 인증 정보 ARN**에서 보안 암호의 ARN을 확인합니다. 이 ARN은 보안 암호의 식별자이며, AWS Secrets Manager에서 보안 암호의 세부 정보를 보는 데 사용할 수 있습니다.

# 데이터베이스 연결 자격 증명을 위한 보안 암호 생성
<a name="redshift-secrets-manager-integration-create"></a>

Secrets Manager 보안 암호를 생성하여 Amazon Redshift 프로비저닝된 클러스터 또는 Redshift Serverless 네임스페이스 및 작업 그룹에 연결하는 데 사용되는 자격 증명을 저장할 수 있습니다. 이 보안 암호는 Amazon Redshift 쿼리 에디터 v2에서 쿼리를 예약할 때도 사용할 수 있습니다.

**Secrets Manager 콘솔을 사용하여 Amazon Redshift 프로비저닝된 클러스터의 데이터베이스에 대한 보안 암호를 생성하려면**

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 Secrets Manager 콘솔을 엽니다.

1. **보안 암호** 목록으로 이동한 다음 **새 보안 암호 저장**을 선택합니다.

1. **Amazon Redshift 데이터 웨어하우스에 대한 자격 증명**을 선택합니다. 보안 암호를 생성하는 단계에서 다음과 같이 정보를 입력합니다.
   + **사용자 이름** **자격 증명**에 데이터 웨어하우스의 관리 사용자 이름을 입력합니다.
   + **암호** **자격 증명**에 **사용자 이름**의 암호를 입력합니다.
   + **암호화 키**에서 암호화 키를 선택합니다.
   + **데이터 웨어하우스**에서 데이터가 포함된 Amazon Redshift 프로비저닝된 클러스터를 선택합니다.
   + **보안 암호 이름**에 보안 암호 이름을 입력합니다.
   + **설명**에 보안 암호의 설명을 입력합니다.
   + **태그**에 **Redshift** 단어가 포함된 **태그 키**를 입력합니다. 이 태그 키는 Amazon Redshift 쿼리 에디터 v2를 사용하여 데이터 웨어하우스에 연결하려고 할 때 보안 암호를 나열하는 데 필요합니다. 보안 암호에 **Redshift** 문자열로 시작하는 태그 키가 있어야만 보안 암호가 관리 콘솔의 AWS Secrets Manager에 나열됩니다.

1. **검토** 단계에서 변경 내용을 **저장**할 때까지 여러 화면을 통해 보안 암호에 대한 정보를 계속 입력합니다.

   자격 증명, 엔진, 호스트, 포트 및 클러스터 식별자의 특정 값이 보안 암호에 저장됩니다. 또한 태그 키 `Redshift`를 사용하여 보안 암호에 태그가 지정됩니다.

**Redshift Serverless 콘솔을 사용하여 Redshift Serverless 네임스페이스에서 데이터베이스의 보안 암호를 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. **Redshift Serverless**를 선택하고 **네임스페이스 구성**으로 이동합니다.

1. 보안 암호 자격 증명을 생성할 네임스페이스를 선택합니다.

1. **작업**, **관리자 자격 증명 편집**을 엽니다.

1. **관리자 암호**에서 **AWS Secrets Manager에서 관리자 자격 증명 관리**를 선택합니다.

1. 변경 사항을 저장하려면 **변경 사항 저장**을 선택합니다.

암호가 성공적으로 변경되었다는 메시지가 나타나는지 확인합니다. Secrets Manager 콘솔에서도 보안 암호를 볼 수 있습니다. 이 보안 암호를 사용하면 AWS Secrets Manager 연결 방법을 사용하여 Redshift Serverless 콘솔 및 Amazon Redshift 쿼리 에디터 v2에 있는 작업 그룹의 데이터베이스에 연결할 수 있습니다. 보안 암호에 'Redshift' 문자열로 시작하는 태그 키가 있어야만 쿼리 에디터 v2 웹 애플리케이션에 나열됩니다. 보안 암호에 **Redshift** 문자열로 시작하는 태그 키가 있어야만 보안 암호가 관리 콘솔의 AWS Secrets Manager에 나열됩니다.

**Secrets Manager 콘솔을 사용하여 Redshift Serverless 네임스페이스에서 데이터베이스의 보안 암호를 생성하려면**

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)에서 Secrets Manager 콘솔을 엽니다.

1. **보안 암호** 목록으로 이동한 다음 **새 보안 암호 저장**을 선택합니다.

1. **Amazon Redshift 데이터 웨어하우스에 대한 자격 증명**을 선택합니다. 보안 암호를 생성하는 단계에서 다음과 같이 정보를 입력합니다.
   + **사용자 이름** **자격 증명**에 데이터 웨어하우스의 관리 사용자 이름을 입력합니다.
   + **암호** **자격 증명**에 **사용자 이름**의 암호를 입력합니다.
   + **암호화 키**에서 암호화 키를 선택합니다.
   + **데이터 웨어하우스**에서 데이터가 포함된 Redshift Serverless 네임스페이스를 선택합니다.
   + **보안 암호 이름**에 보안 암호 이름을 입력합니다.
   + **설명**에 보안 암호의 설명을 입력합니다.
   + **태그**에 **Redshift** 단어가 포함된 **태그 키**를 입력합니다. 이 태그 키는 Amazon Redshift 쿼리 에디터 v2를 사용하여 데이터 웨어하우스에 연결하려고 할 때 보안 암호를 나열하는 데 필요합니다. 보안 암호에 **Redshift** 문자열로 시작하는 태그 키가 있어야만 보안 암호가 관리 콘솔의 AWS Secrets Manager에 나열됩니다.

1. **검토** 단계에서 변경 내용을 **저장**할 때까지 여러 화면을 통해 보안 암호에 대한 정보를 계속 입력합니다.

   자격 증명, 데이터베이스 이름, 호스트, 포트, 네임스페이스 및 엔진의 특정 값이 보안 암호에 저장됩니다. 또한 태그 키 `Redshift`를 사용하여 보안 암호에 태그가 지정됩니다.

**AWS CLI를 사용하여 Redshift Serverless 네임스페이스에서 데이터베이스의 보안 암호를 생성하려면**

AWS CLI를 사용하여 보안 암호를 생성할 수 있습니다. 한 가지 방법은 AWS CloudShell을 사용하여 다음과 같이 Secrets Manager AWS CLI 명령을 실행하는 것입니다. 다음 절차에 표시된 AWS CLI 명령을 실행하려면 적절한 권한이 있어야 합니다.

1. AWS 콘솔에서 AWS CloudShell 명령 프롬프트를 엽니다. AWS CloudShell에 대한 자세한 내용은 **AWS CloudShell 사용 설명서에서 [AWS CloudShell이란 무엇인가요](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)를 참조하세요.

1. 예를 들어 보안 암호가 `MyTestSecret`인 경우, 데이터베이스에 연결하거나 Amazon Redshift 쿼리 에디터 v2 쿼리를 예약하는 데 사용되는 보안 암호를 저장하는 Secrets Manager 명령을 입력합니다. 명령에서 다음 값을 해당 환경의 값으로 바꿉니다.
   + *admin*은 데이터 웨어하우스의 관리 사용자 이름입니다.
   + *passw0rd*는 관리자의 암호입니다.
   + *dev*는 데이터 웨어하우스의 초기 데이터베이스 이름입니다.
   + *region*은 데이터 웨어하우스가 포함된 AWS 리전입니다. 예: `us-east-1`.
   + *123456789012*는 AWS 계정입니다.
   + *namespace-id*는 `c3928f0e-c889-4d2b-97a5-5738324d5d3e`와 비슷한 네임스페이스 식별자입니다. 이 식별자는 Amazon Redshift 콘솔의 서버리스 네임스페이스 세부 정보 페이지에서 찾을 수 있습니다.

   ```
   aws secretsmanager create-secret \
   --name MyTestSecret \
   --description "My test secret created with the CLI." \
   --secret-string "{\"username\":\"admin\",\"password\":\"passw0rd\",\"dbname\":\"dev\",\"engine\":\"redshift\"}" \
   --tags "[{\"Key\":\"redshift-serverless:namespaceArn\",\"Value\":\"arn:aws:redshift-serverless:region:123456789012:namespace/namespace-id\"}]"
   ```