AWS Secrets Manager에서 RDS 프록시용 데이터베이스 자격 증명 설정
생성하는 각 프록시에 대해 먼저 Secrets Manager 서비스를 사용하여 사용자 이름 및 암호 자격 증명 집합을 저장합니다. 프록시가 Aurora DB 클러스터에서 연결하는 각 데이터베이스 사용자 계정에 대해 별도의 Secrets Manager 암호를 만듭니다.
Secrets Manager 콘솔에서는 username
및 password
필드에 대한 값을 사용하여 이러한 보안 암호를 만듭니다. 이렇게 하면 프록시가 프록시와 연결된 Aurora DB 클러스터에서 해당 데이터베이스 사용자에게 연결할 수 있습니다. 이렇게 하려면 다른 데이터베이스 자격 증명, RDS 데이터베이스 자격 증명 또는 다른 유형의 비밀 설정을 사용할 수 있습니다. 사용자 이름 및 암호 필드에 적절한 값을 입력하고 다른 필수 필드의 값을 입력합니다. 비밀에 호스트 및 포트 같은 다른 필드가 존재하는 경우 프록시는 이를 무시합니다. 이러한 세부 정보는 프록시에서 자동으로 제공합니다.
다른 유형의 비밀을 선택할 수도 있습니다. 이 경우 username
및 password
라는 키를 사용하여 비밀을 만듭니다.
프록시를 통해 특정 데이터베이스 사용자로 연결하려면 보안 암호와 연결된 암호가 해당 사용자의 데이터베이스 암호와 일치하는지 확인합니다. 일치하지 않는 경우 Secrets Manager에서 연결된 비밀을 업데이트할 수 있습니다. 이 경우에도 비밀 자격 증명과 데이터베이스 암호가 일치하는 다른 계정에 연결할 수 있습니다.
AWS CLI 또는 RDS API를 통해 프록시를 생성할 때 해당 암호의 Amazon 리소스 이름(ARN)을 지정합니다. 프록시가 액세스할 수 있는 모든 DB 사용자 계정에 지정합니다. AWS Management Console에서는 설명하는 이름으로 비밀을 선택합니다.
Secrets Manager에서 비밀을 생성하는 방법에 대한 자세한 내용은 Secrets Manager 설명서에서 비밀 생성 페이지를 참조하세요. 다음 기법 중 한 가지를 사용할 수 있습니다.
-
콘솔에서 Secrets Manager
를 사용합니다. -
CLI를 사용하여 RDS Proxy에서 사용할 Secrets Manager 비밀을 만들려면 다음과 같은 명령을 사용합니다.
aws secretsmanager create-secret --name "
secret_name
" --description "secret_description
" --regionregion_name
--secret-string '{"username":"db_user","password":"db_user_password"}' -
또한 사용자 지정 키를 생성하여 Secrets Manager 보안 암호를 암호화할 수 있습니다. 다음 명령은 예시 키를 생성합니다.
PREFIX=
my_identifier
aws kms create-key --description "$PREFIX-test-key" --policy '{ "Id":"$PREFIX-kms-policy", "Version":"2012-10-17", "Statement": [ { "Sid":"Enable IAM User Permissions", "Effect":"Allow", "Principal":{"AWS":"arn:aws:iam::account_id
:root"}, "Action":"kms:*","Resource":"*" }, { "Sid":"Allow access for Key Administrators", "Effect":"Allow", "Principal": { "AWS": ["$USER_ARN","arn:aws:iam:account_id
::role/Admin"] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource":"*" }, { "Sid":"Allow use of the key", "Effect":"Allow", "Principal":{"AWS":"$ROLE_ARN"}, "Action":["kms:Decrypt","kms:DescribeKey"], "Resource":"*" } ] }'
예를 들어, 다음 명령은 두 데이터베이스 사용자에 대한 Secrets Manager 보안 암호를 생성합니다.
aws secretsmanager create-secret \ --name
secret_name_1
--description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password
"}' aws secretsmanager create-secret \ --namesecret_name_2
--description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password
"}'
사용자 지정 AWS KMS 키로 암호화된 이러한 보안 암호를 만들려면 다음 명령을 사용하세요.
aws secretsmanager create-secret \ --name
secret_name_1
--description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password
"}' --kms-key-id arn:aws:kms:us-east-2:account_id
:key/key_id
aws secretsmanager create-secret \ --namesecret_name_2
--description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password
"}' --kms-key-id arn:aws:kms:us-east-2:account_id
:key/key_id
AWS 계정이 소유한 암호를 확인하려면 다음과 같은 명령을 사용합니다.
aws secretsmanager list-secrets
CLI를 사용하여 프록시를 생성할 경우 하나 이상의 보안 정보에 대한 Amazon 리소스 이름(ARN)을 --auth
파라미터에 전달합니다. 다음 Linux 예제에서는 AWS 계정이 소유한 각 보안 정보의 이름과 ARN만 사용하여 보고서를 준비하는 방법을 보여 줍니다. 이 예에서는 --output table
버전 2에서 제공되는 AWS CLI 파라미터를 사용합니다. AWS CLI 버전 1을 사용하는 경우 --output text
를 대신 사용합니다.
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
올바른 자격 증명을 올바른 형식으로 보아 정보에 저장했는지 확인하려면 다음과 같은 명령을 사용합니다. 암호의 약식 이름 또는 ARN을
으로 대체합니다.your_secret_name
aws secretsmanager get-secret-value --secret-id
your_secret_name
출력에는 다음과 같이 JSON으로 인코딩된 값을 표시하는 행이 포함되어야 합니다.
"SecretString": "{\"username\":\"
your_username
\",\"password\":\"your_password
\"}",