RDS 프록시에 대한 IAM 인증 구성
Amazon RDS에서 RDS 프록시에 대한 AWS Identity and Access Management(IAM) 인증을 설정하려면 필수 권한을 부여하는 IAM 정책을 만들고 구성합니다.
이 주제에서는 필요한 IAM 정책을 만들고 IAM 역할에 연결하는 등 RDS 프록시에 대한 IAM 인증을 구성하는 단계를 제공합니다.
작은 정보
이 절차는 자체 IAM 역할을 만들려는 경우에만 필요합니다. 그렇지 않으면 프록시를 설정할 때 RDS가 필요한 역할을 자동으로 만들 수 있으므로 이러한 단계를 건너뛸 수 있습니다.
사전 조건
RDS 프록시에 대한 IAM 인증을 설정하기 전에 다음 사항이 포함되어 있는지 확인합니다.
-
AWS Secrets Manager - 데이터베이스 자격 증명이 포함된 하나 이상의 저장된 보안 암호입니다. 보안 암호를 만드는 설명은 RDS 프록시용 데이터베이스 자격 증명 설정 섹션을 참조하시기 바랍니다.
엔드 투 엔드 IAM 인증을 사용하는 경우에는 필요하지 않습니다.
-
IAM 권한 - AWS Secrets Manager에서 IAM 정책, 역할 및 보안 암호를 만들고 관리할 수 있는 권한이 있는 IAM 역할 또는 사용자입니다.
엔드 투 엔드 IAM 인증을 위한 IAM 정책 생성
엔드 투 엔드 IAM 인증을 사용하는 경우 RDS 프록시는 Secrets Manager에서 자격 증명을 검색하는 대신 IAM 인증을 사용하여 데이터베이스에 연결합니다. 이렇게 하려면 프록시에 사용할 데이터베이스 계정에 대한 rds-db:connect 권한으로 IAM 역할을 구성해야 합니다.
IAM을 사용하여 데이터베이스에 대한 RDS 프록시를 인증하려면 필요한 데이터베이스 연결 권한을 부여하는 정책을 사용하여 IAM 역할을 생성합니다.
프록시를 사용하여 엔드 투 엔드 IAM 인증을 위한 역할 생성
AWS Management 콘솔에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
역할에 대한 권한 정책을 만듭니다. 일반적인 단계는 IAM 정책 생성(콘솔)을 참조하시기 바랍니다.
이 정책을 JSON 편집기에 붙여넣고 다음 변경 사항을 적용합니다.
-
자신의 계정 ID를 대체합니다.
-
프록시가 상주해야 하는 위치로
us-east-2를 대체합니다. -
데이터베이스 리소스 ID와 사용자 이름을 사용하려는 이름으로 대체합니다. 리소스 ID 형식은 RDS 인스턴스와 Aurora clusters 간에 다릅니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds-db:connect", "Resource": [ "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1", "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2" ] } ] } -
-
역할을 만들고 역할에 권한 정책을 연결합니다. 일반적인 단계는 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하시기 바랍니다.
신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다. 사용 사례에서 RDS를 선택하고 사용 사례에서 RDS - 데이터베이스에 역할 추가를 선택합니다.
-
권한 정책에서 사용자가 만든 정책을 선택합니다.
-
신뢰할 수 있는 엔터티 선택에서 역할에 대해 신뢰할 수 있는 정책을 다음과 같이 입력합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
AWS CLI를 사용하여 역할을 만들려면 다음 요청을 보냅니다.
aws iam create-role \ --role-namemy_e2e_iam_role_name\ --assume-role-policy-document '{"Version":"2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
그런 다음 정책을 역할에 연결합니다.
aws iam put-role-policy \ --role-namemy_e2e_iam_role_name\ --policy-namee2e_iam_db_connect_policy\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds-db:connect", "Resource": [ "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1", "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2" ] } ] }'
엔드 투 엔드 IAM 인증을 위해 구성된 IAM 역할 및 권한을 사용하여 DefaultAuthScheme이 IAM_AUTH로 설정된 프록시를 생성할 수 있습니다. 이 프록시는 Secrets Manager 보안 암호 없이 IAM을 사용하여 데이터베이스에 직접 인증합니다. 지침은 Amazon Aurora용 프록시 만들기 섹션을 참조하세요.
엔드 투 엔드 IAM 인증을 사용하는 경우 IAM 인증을 사용하여 데이터베이스 계정 생성에 설명된 대로 데이터베이스 사용자가 IAM 인증을 위해 구성되어 있는지 확인합니다.
Secrets Manager 액세스를 위한 IAM 정책 만들기
RDS 프록시가 Secrets Manager에서 데이터베이스 자격 증명을 검색하도록 허용하려면 필수 권한을 부여하는 정책을 사용하여 IAM 역할을 만듭니다.
프록시와 함께 사용할 보안 암호에 액세스하는 IAM 정책을 만들려면 다음과 같이 합니다.
AWS Management 콘솔에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
역할에 대한 권한 정책을 만듭니다. 일반적인 단계는 IAM 정책 생성(콘솔)을 참조하시기 바랍니다.
이 정책을 JSON 편집기에 붙여넣고 다음 변경 사항을 적용합니다.
-
자신의 계정 ID를 대체합니다.
-
프록시가 상주할 리전으로
us-east-2를 대체합니다. -
보안 암호 이름을 사용자가 만든 이름으로 대체합니다. 자세한 내용은 Specifying KMS keys in IAM policy statements를 참조하시기 바랍니다.
-
KMS 키 ID를 기본 키 또는 자체 키인 Secrets Manager 보안 암호를 암호화하는 데 사용한 ID로 대체합니다.
-
-
역할을 만들고 역할에 권한 정책을 연결합니다. 일반적인 단계는 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하시기 바랍니다.
신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택합니다. 사용 사례에서 RDS를 선택하고 사용 사례에서 RDS - 데이터베이스에 역할 추가를 선택합니다.
-
권한 정책에서 사용자가 만든 정책을 선택합니다.
-
신뢰할 수 있는 엔터티 선택에서 역할에 대해 신뢰할 수 있는 정책을 다음과 같이 입력합니다.
AWS CLI를 사용하여 역할을 만들려면 다음 요청을 보냅니다.
aws iam create-role \ --role-namemy_role_name\ --assume-role-policy-document '{"Version": "2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
그런 다음 정책을 역할에 연결합니다.
aws iam put-role-policy \ --role-namemy_role_name\ --policy-namesecret_reader_policy\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }'
IAM 역할 및 권한이 구성된 상태에서 이제 프록시를 만들고 이 역할과 연결할 수 있습니다. 이렇게 하면 프록시가 AWS Secrets Manager에서 데이터베이스 자격 증명을 안전하게 검색하고 애플리케이션에 대한 IAM 인증을 사용 설정할 수 있습니다. 지침은 Amazon Aurora용 프록시 만들기 섹션을 참조하세요.