IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용
IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용
사용자나 역할이 DB 인스턴스에 연결할 수 있게 하려면 IAM 정책을 생성해야 해요. 그런 다음 그 정책을 권한 집합(permission set) 또는 역할에 연결해요.
출처: 문서
본문
사용자나 역할이 DB 인스턴스에 연결할 수 있게 하려면 IAM 정책을 생성해야 해요. 그런 다음 그 정책을 권한 집합 또는 역할에 연결해요.
참고
IAM 정책에 대해 자세히 알아보려면 "Amazon RDS의 ID 및 접근 관리" 문서를 참고하세요.
다음 예시 정책은 사용자가 IAM 데이터베이스 인증을 사용해 DB 인스턴스에 연결할 수 있게 해줘요.
중요
관리자 권한이 있는 사용자는 IAM 정책의 명시적 권한 없이도 DB 인스턴스에 접근할 수 있어요. 관리자의 DB 인스턴스 접근을 제한하려면 적절하고 더 적은 권한을 가진 IAM 역할을 만들고 관리자에게 할당할 수 있어요.
참고
rds-db: 접두사를 rds:로 시작하는 다른 RDS API 작업 접두사와 혼동하지 마세요. rds-db: 접두사와 rds-db:connect 작업은 IAM 데이터베이스 인증에만 사용해요. 다른 어떤 컨텍스트에서도 유효하지 않아요.
예시 정책에는 다음 요소가 있는 단일 문(statement)이 포함돼요.
Effect– DB 인스턴스에 대한 접근을 부여하려면Allow를 지정해요. 명시적으로 접근을 허용하지 않으면 기본적으로 접근이 거부돼요.Action– DB 인스턴스에 대한 연결을 허용하려면rds-db:connect를 지정해요.Resource– 한 DB 인스턴스의 한 데이터베이스 계정을 설명하는 ARN(Amazon Resource Name)을 지정해요. ARN 형식은 다음과 같아요.
arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name
이 형식에서 다음을 바꿔요.
-
region– DB 인스턴스의 AWS 리전이에요. 예시 정책에서 AWS 리전은us-east-2예요. -
account-id– DB 인스턴스의 AWS 계정 번호예요. 예시 정책에서 계정 번호는1234567890이에요. 사용자는 DB 인스턴스의 계정과 같은 계정에 있어야 해요. 교차 계정 접근을 수행하려면 DB 인스턴스 계정에서 위에 표시된 정책으로 IAM 역할을 만들고 다른 계정이 그 역할을 맡을 수 있게 허용해요. -
DbiResourceId– DB 인스턴스의 식별자예요. 이 식별자는 AWS 리전에 고유하며 변경되지 않아요. 예시 정책에서 식별자는db-ABCDEFGHIJKL01234예요.Amazon RDS용 AWS Management Console에서 DB 인스턴스 리소스 ID를 찾으려면 DB 인스턴스를 선택해 세부 정보를 봐요. 그런 다음 Configuration(구성) 탭을 선택해요. Configuration 섹션에 Resource ID가 표시돼요.
또는 AWS CLI 명령을 사용해 현재 AWS 리전의 모든 DB 인스턴스의 식별자와 리소스 ID를 나열할 수 있어요.
aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"
Amazon Aurora를 사용한다면 DbiResourceId 대신 DbClusterResourceId를 지정해요. 자세한 내용은 Amazon Aurora 사용자 가이드의 "IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용" 문서를 참고하세요.
참고
RDS Proxy를 통해 데이터베이스에 연결한다면 prx-ABCDEFGHIJKL01234 같은 프록시 리소스 ID를 지정해요. RDS Proxy와 IAM 데이터베이스 인증 사용에 대한 정보는 "IAM 인증을 사용한 데이터베이스 연결" 문서를 참고하세요.
db-user-name– IAM 인증과 연결할 데이터베이스 계정의 이름이에요. 예시 정책에서 데이터베이스 계정은db_user예요.
다양한 접근 패턴을 지원하기 위해 다른 ARN을 구성할 수 있어요.
- 다음 정책은 DB 인스턴스의 두 개의 서로 다른 데이터베이스 계정에 대한 접근을 허용해요.
- 다음 정책은 특정 AWS 계정과 AWS 리전의 모든 DB 인스턴스와 데이터베이스 계정을 일치시키기 위해
"*"문자를 사용해요. - 다음 정책은 특정 AWS 계정과 AWS 리전의 모든 DB 인스턴스를 일치시켜요. 그러나 정책은
jane_doe데이터베이스 계정이 있는 DB 인스턴스에만 접근을 부여해요.
사용자나 역할은 데이터베이스 사용자가 가진 데이터베이스에만 접근할 수 있어요. 예를 들어 DB 인스턴스에 dev라는 데이터베이스와 test라는 다른 데이터베이스가 있다고 가정해요. 데이터베이스 사용자 jane_doe가 dev에만 접근 권한이 있다면, jane_doe 사용자로 해당 DB 인스턴스에 접근하는 모든 사용자나 역할도 dev에만 접근할 수 있어요. 이 접근 제한은 테이블, 뷰 등 다른 데이터베이스 객체에도 동일하게 적용돼요.
관리자는 주체가 필요한 지정된 리소스에서 특정 API 작업을 수행할 수 있는 권한을 부여하는 IAM 정책을 만들어야 해요. 그런 다음 해당 정책을 권한이 필요한 권한 집합 또는 역할에 연결해야 해요. 정책 예시는 "Amazon RDS의 ID 기반 정책 예시" 문서를 참고하세요.
권한 집합 또는 역할에 IAM 정책 연결
데이터베이스 인증을 허용하는 IAM 정책을 만든 후에는 해당 정책을 권한 집합 또는 역할에 연결해야 해요. 이에 대한 튜토리얼은 IAM 사용자 가이드의 "첫 번째 고객 관리형 정책 생성 및 연결" 문서를 참고하세요.
튜토리얼을 진행하면서 이 섹션에 표시된 정책 예시 중 하나를 시작점으로 사용해 필요에 맞게 조정할 수 있어요. 튜토리얼이 끝나면 rds-db:connect 작업을 사용할 수 있는 정책이 연결된 권한 집합을 갖게 돼요.
참고
여러 권한 집합이나 역할을 같은 데이터베이스 사용자 계정에 매핑할 수 있어요. 예를 들어 IAM 정책이 다음 리소스 ARN을 지정했다고 가정해요.
arn:aws:rds-db:us-east-2:123456789012:dbuser:db-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe
정책을 Jane, Bob, Diego에게 연결하면 이 사용자 각각이 지정된 DB 인스턴스에 jane_doe 데이터베이스 계정을 사용해 연결할 수 있어요.