

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 데이터베이스가 아닌 AWS Secrets Manager 보안 암호에 대한 자동 교체 설정
<a name="rotate-secrets_turn-on-for-other"></a>

이 자습서에서는 비데이터베이스 보안 암호에 대해 [Lambda 함수로 교체](rotate-secrets_lambda.md)를 설정하는 방법을 설명합니다. 교체는 주기적으로 보안 암호를 업데이트하는 프로세스입니다. 보안 암호를 교체하면 보안 암호와 보안 암호가 사용되는 데이터베이스 또는 서비스 모두에서 보안 인증이 업데이트됩니다.

데이터베이스 보안 암호는 [데이터베이스 보안 암호 자동 교체(콘솔)](rotate-secrets_turn-on-for-db.md) 섹션을 참조하세요.

**주의**  
자동 교체를 켜려면 Lambda 교체 함수에 대한 IAM 실행 역할을 생성하고 이 역할에 권한 정책을 연결할 수 있는 권한이 있어야 합니다. `iam:CreateRole` 및 `iam:AttachRolePolicy` 권한이 모두 필요합니다. 자격 증명에 이러한 권한을 부여하면 해당 자격 증명은 자신에게 모든 권한을 부여할 수 있습니다.

**Topics**
+ [1단계: 일반 교체 함수 생성](#rotate-secrets_turn-on-for-other_create)
+ [2단계: 교체 함수 코드 작성](#rotate-secrets_turn-on-for-other_write)
+ [3단계: 보안 암호에 대한 교체 구성](#rotate-secrets_turn-on-for-other_configure)
+ [4단계: 교체 함수가 Secrets Manager와 데이터베이스 또는 서비스에 액세스하도록 허용](#rotate-secrets_turn-on-for-other_perms)
+ [5단계: Secrets Manager가 교체 함수를 간접적으로 호출하도록 허용](#rotate-secrets_turn-on-for-other_perms2)
+ [6단계: 교체 함수에 대한 네트워크 액세스 설정](#rotate-secrets_turn-on-for-other_network)
+ [다음 단계](#rotate-secrets_turn-on-for-other_stepnext)

## 1단계: 일반 교체 함수 생성
<a name="rotate-secrets_turn-on-for-other_create"></a>

시작하려면 Lambda 교체 함수를 생성합니다. 보안 암호를 교체하기 위한 코드는 포함되지 않으므로 이후 단계에서 작성하겠습니다. 교체 함수의 작동 방식에 대한 내용은 [Lambda 교체 함수](rotate-secrets_lambda-functions.md) 섹션을 참조하세요.

지원되는 리전에서는 AWS Serverless Application Repository 를 사용하여 템플릿에서 함수를 생성할 수 있습니다. 지원되는 리전 목록은 [AWS Serverless Application Repository FAQ](https://aws.amazon.com/serverless/serverlessrepo/faqs/) 섹션을 참조하세요. 다른 리전의 경우, 함수를 처음부터 새로 생성하고 템플릿 코드를 함수에 복사합니다.

**일반 교체 함수를 생성하는 방법**

1.  AWS Serverless Application Repository 가 해당 리전에서 지원되는지 확인하려면 *AWS 일반* 참조의 [AWS Serverless Application Repository 엔드포인트 및 할당량을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/serverlessrepo.html).

1. 다음 중 하나를 수행하세요.
   + 해당 리전에서 AWS Serverless Application Repository 가 지원되는 경우:

     1. 탐색 창에서 **애플리케이션**을 선택한 다음 **애플리케이션 생성**을 선택합니다.

     1. **애플리케이션 생성** 페이지에서 **서버리스 애플리케이션** 탭을 선택합니다.

     1. **퍼블릭 애플리케이션** 아래의 검색 상자에 **SecretsManagerRotationTemplate**을 입력합니다.

     1. **Show apps that create custom IAM roles or resource policies**를 선택합니다.

     1. **SecretsManagerRotationTemplate** 타일을 선택합니다.

     1. **검토, 구성 및 배포** 페이지의 **애플리케이션 설정** 타일에서 필수 필드를 채웁니다.
        + **엔드포인트**의 경우 **https://**를 포함하여, 리전의 엔드포인트를 입력합니다. 엔드포인트 목록은 [AWS Secrets Manager 엔드포인트](asm_access.md#endpoints) 섹션을 참조하세요.
        + Lambda 함수를 VPC에 입력하려면 **vpcSecurityGroupIds** 및 **vpcSubnetIds**를 포함합니다.

     1. **배포(Deploy)**를 선택합니다.
   +  AWS Serverless Application Repository 가 해당 리전에서 지원되지 않는 경우:

     1. Lambda 콘솔 페이지의 **함수**를 선택하고 **함수 생성**을 선택합니다.

     1. **함수 생성** 페이지에서 다음을 수행합니다.

        1. **새로 작성**을 선택합니다.

        1. **Function name**(함수 이름)에 교체 함수의 이름을 입력합니다.

        1. **런타임**에서 **Python 3.12**를 선택합니다.

        1. **함수 생성**을 선택합니다.

## 2단계: 교체 함수 코드 작성
<a name="rotate-secrets_turn-on-for-other_write"></a>

이 단계에서는 보안 암호를 업데이트하고, 보안 암호가 사용되는 서비스 또는 데이터베이스를 업데이트하는 코드를 작성합니다. 교체 함수를 직접 작성할 경우에 대한 팁을 포함하여, 교체 함수의 기능에 대한 자세한 내용은 [Lambda 교체 함수](rotate-secrets_lambda-functions.md) 섹션을 참조하세요. [교체 함수 템플릿](reference_available-rotation-templates.md)도 참조로 사용할 수 있습니다.

## 3단계: 보안 암호에 대한 교체 구성
<a name="rotate-secrets_turn-on-for-other_configure"></a>

이 단계에서는 보안 암호에 대한 교체 일정을 설정하고, 교체 함수를 보안 암호에 연결합니다.

**교체를 구성하고 교체 함수를 생성하려면**

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

1. **보안 암호(Secrets)** 페이지에서 보안 암호를 선택합니다.

1. **보안 암호 세부 정보(Secret details)** 페이지의 **교체 구성(Rotation configuration)** 섹션에서 **교체 편집(Edit rotation)**을 선택합니다. **Edit rotation configuration**(교체 구성 편집) 대화 상자에서 다음을 수행합니다.

   1. **Automatic rotation**(자동 교체)을 켭니다.

   1. **Rotation schedule**(교체 일정)에서 **Schedule expression builder**(예약 표현식 빌더) 또는 **Schedule expression**(예약 표현식)으로 일정(UTC 표준 시간대)을 입력합니다. Secrets Manager는 일정을 `rate()` 또는 `cron()` 표현식으로 저장합니다. 교체 기간은 **Start time**(시작 시간)을 지정하지 않는 한 자정에 자동으로 시작됩니다. 보안 암호를 4시간마다 교체할 수 있습니다. 자세한 내용은 [교체 일정](rotate-secrets_schedule.md) 단원을 참조하십시오.

   1. (선택 사항) **Window duration**(지속 시간)에서 Secrets Manager가 보안 암호를 교체할 기간의 길이를 입력합니다. 예를 들어 **3h**는 3시간입니다. 기간은 그 다음 교체 기간까지 연장되지 않아야 합니다. 시간 단위의 교체 일정에서 **지속 시간**을 지정하지 않으면 한 시간 후에 자동으로 종료됩니다. 일 단위의 교체 일정인 경우 해당 날짜의 하루가 끝나면 자동으로 종료됩니다.

   1. (선택 사항) 변경 사항을 저장할 때 보안 암호가 교체되게 하려면 **보안 암호를 저장할 때 즉시 교체(Rotate immediately when the secret is stored)**를 선택합니다. 확인란의 선택을 취소하는 경우에는 설정한 예약에 따라 첫 번째 교체가 시작됩니다.

   1. **교체 함수**에서 1단계에서 생성한 Lambda 함수를 선택합니다.

   1. **저장**을 선택합니다.

## 4단계: 교체 함수가 Secrets Manager와 데이터베이스 또는 서비스에 액세스하도록 허용
<a name="rotate-secrets_turn-on-for-other_perms"></a>

Lambda 교체 함수에는 Secrets Manager 보안 암호에 액세스할 수 있는 권한과, 데이터베이스 또는 서비스에 액세스할 수 있는 권한이 필요합니다. 이 단계에서는 Lambda 실행 역할에 이러한 권한을 부여합니다. AWS 관리형 키 `aws/secretsmanager` 이외의 KMS 키를 사용하여 보안 암호를 암호화할 경우 Lambda 실행 역할에 키 사용 권한을 부여해야 합니다. [SecretARN 암호화 컨텍스트](security-encryption.md#security-encryption-encryption-context)를 사용하여 암호 해독 기능의 사용을 제한할 수 있으므로 교체 함수 역할은 교체를 담당하는 암호의 암호 해독에만 액세스할 수 있습니다. 정책 예시는 [교체 권한](rotating-secrets-required-permissions-function.md) 섹션을 참조하세요.

지침은 *AWS Lambda 개발자 가이드*의 [Lambda 실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)을 참조하세요.

## 5단계: Secrets Manager가 교체 함수를 간접적으로 호출하도록 허용
<a name="rotate-secrets_turn-on-for-other_perms2"></a>

Secrets Manager가 설정한 교체 일정에 따라 교체 함수를 간접적으로 호출하도록 허용하려면, Lambda 함수의 리소스 정책에서 Secrets Manager 서비스 보안 주체에게 `lambda:InvokeFunction` 권한을 부여해야 합니다.

교체 함수에 대한 리소스 정책에서는 컨텍스트 키 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)를 포함하여 Lambda가 [혼동된 대리자](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)로 사용되지 않도록 하는 것이 좋습니다. 일부 AWS 서비스의 경우 혼동된 대리자 시나리오를 방지하려면 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 키를 모두 사용하는 것이 AWS 좋습니다. 그러나 교체 함수 정책에 `aws:SourceArn` 조건을 포함하는 경우 교체 함수는 해당 ARN에서 지정한 보안 암호를 교체하는 데만 사용할 수 있습니다. 여러 보안 암호에 대해 교체 기능을 사용할 수 있도록 컨텍스트 키 `aws:SourceAccount`만 포함하는 것이 좋습니다.

리소스 정책을 Lambda 함수에 연결하려면 [Lambda에 대한 리소스 기반 정책 사용](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)을 참조하세요.

다음 정책에서는 Secrets Manager가 Lambda 함수를 간접적으로 호출하도록 허용하는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "default",
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "secretsmanager.amazonaws.com"
            },
        "Action": "lambda:InvokeFunction",
        "Condition": {
            "StringEquals": {
                "AWS:SourceAccount": "{{123456789012}}"
            }
        },
        "Resource": "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:{{function-name}}"
    }
    ]
}
```

------

## 6단계: 교체 함수에 대한 네트워크 액세스 설정
<a name="rotate-secrets_turn-on-for-other_network"></a>

이 단계에서는 교체 함수가 Secrets Manager에 연결하고, 보안 암호가 사용되는 서비스 또는 데이터베이스에도 연결할 수 있도록 허용합니다. 보안 암호를 교체하려면 교체 함수가 두 가지 모두에 액세스할 수 있어야 합니다. [AWS Lambda 교체 함수에 대한 네트워크 액세스](rotation-function-network-access.md)을(를) 참조하세요.

## 다음 단계
<a name="rotate-secrets_turn-on-for-other_stepnext"></a>

3단계에서 교체를 구성한 경우, 보안 암호를 교체하기 위한 일정을 설정합니다. 예약된 시간에 교체가 실패하면 Secrets Manager는 교체를 여러 번 시도합니다. [보안 암호 즉시 교체](rotate-secrets_now.md)의 지침에 따라 즉시 교체를 시작할 수도 있습니다.

교체에 실패한 경우 [교체 문제 해결](troubleshoot_rotation.md) 단원을 참조하세요.