Amazon S3 버킷에 대한 액세스 권한 설정
데이터를 Amazon S3으로 내보내려면 PostgreSQL DB 인스턴스에 파일이 저장될 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다.
이렇게 하려면 다음 절차를 따르십시오.
IAM 역할을 통해 PostㅍgreSQL DB 인스턴스에 액세스할 수 있는 권한을 Amazon S3에 부여하려면
-
IAM 정책을 생성합니다.
이 정책은 PostgreSQL DB 인스턴스가 Amazon S3에 액세스할 수 있도록 허용하는 권한을 버킷 및 객체에 부여합니다.
이 정책을 생성하는 과정에서 다음 단계를 수행하십시오.
-
다음과 같은 필수 작업을 정책에 포함하여 PostgreSQL DB 인스턴스에서 Amazon S3 버킷으로 파일 전송을 허용합니다.
-
s3:PutObject
-
s3:AbortMultipartUpload
-
-
Amazon S3 버킷과 버킷의 객체를 식별하는 Amazon 리소스 이름(ARN)을 포함합니다. Amazon S3에 액세스하기 위한 ARN 형식은
arn:aws:s3:::
입니다.amzn-s3-demo-bucket
/*
PostgreSQL용 Amazon RDS에 대한 IAM 정책 생성에 대한 자세한 내용은 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용 단원을 참조하십시오. IAM 사용 설명서의 자습서: 첫 번째 고객 관리형 정책 생성 및 연결도 참조하십시오.
다음 AWS CLI 명령은 이 옵션으로
rds-s3-export-policy
라는 IAM 정책을 만듭니다.amzn-s3-demo-bucket
이라는 버킷에 대한 액세스 권한을 부여합니다.주의
특정 버킷에 액세스하도록 구성된 엔드포인트 정책이 있는 프라이빗 VPC 내에 데이터베이스를 설정하는 것이 좋습니다. 자세한 내용은 Amazon VPC 사용 설명서의 Amazon S3용 엔드포인트 정책 사용을 참조하십시오.
모든 리소스에 액세스할 수 있는 정책은 생성하지 않는 것이 좋습니다. 이러한 액세스 권한은 데이터 보안에 위협이 될 수 있습니다.
S3:PutObject
를 사용하여 모든 리소스에 액세스할 수 있는 권한을"Resource":"*"
에 부여하는 정책을 생성하면 내보내기 권한이 있는 사용자가 계정의 모든 버킷으로 데이터를 내보낼 수 있습니다. 또한 사용자는 AWS 리전 내의 공개적으로 쓰기 가능한 버킷으로 데이터를 내보낼 수 있습니다.정책을 만든 후에 정책의 Amazon 리소스 이름(ARN)을 기록하십시오. IAM 역할에 정책을 연결할 때 이후 단계에 ARN이 필요합니다.
aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ] } ] }' -
-
IAM 역할 생성.
Amazon RDS이 이 IAM 역할을 수임하여 사용자 대신 Amazon S3 버킷에 액세스할 수 있도록 역할을 생성합니다. 자세한 내용은 IAM 사용 설명서의 IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하세요.
서비스 권한을 특정 리소스로 제한하는 리소스 기반 정책의
aws:SourceArn
및aws:SourceAccount
전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 혼동된 대리자 문제를 방지하는 가장 효과적인 방법입니다.두 전역 조건 컨텍스트 키와 계정 ID를 포함한
aws:SourceArn
값을 모두 사용하는 경우,aws:SourceAccount
값 및aws:SourceArn
값의 계정은 동일한 정책 문에서 사용될 경우 반드시 같은 계정 ID를 사용해야 합니다.단일 리소스에 대한 교차 서비스 액세스를 원하는 경우
aws:SourceArn
을 사용하세요.-
해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우
aws:SourceAccount
를 사용하세요.
정책에서는 리소스의 전체 ARN이 포함된
aws:SourceArn
전역 조건 컨텍스트 키를 사용해야 합니다. 다음 예제에서는 AWS CLI 명령을 사용하여rds-s3-export-role
이라는 역할을 생성하는 방법을 보여줍니다.예
대상 LinuxmacOS, 또는Unix:
aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname
" } } } ] }'Windows의 경우:
aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname
" } } } ] }' -
생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.
다음 AWS CLI 명령은 앞서 생성한 정책을
rds-s3-export-role.
라는 역할에 연결합니다.
을 이전 단계에서 기록한 정책 ARN으로 바꿉니다.your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role -
IAM 역할을 DB 인스턴스에 추가합니다. 이렇게 하려면 다음에 설명한 대로 AWS Management Console 또는 AWS CLI를 사용합니다.
콘솔을 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
https://console.aws.amazon.com/rds/
에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다. -
세부 정보를 표시하고자 하는 PostgreSQL DB 인스턴스 이름을 선택합니다.
-
Connectivity & security(연결성 및 보안) 탭에 있는 Manage IAM roles(IAM 역할 관리) 섹션의 이 인스턴스에 IAM 역할 추가에서 추가할 역할을 선택합니다.
-
기능에서 s3Export를 선택합니다.
-
[Add role]을 선택합니다.
CLI를 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
-
다음 명령을 사용해
my-db-instance
라는 PostgreSQL DB 인스턴스에 역할을 추가합니다.
을 이전 단계에서 기록한 정책 ARN으로 교체합니다.your-role-arn
s3Export
옵션의 값에 대해--feature-name
를 사용합니다.예
대상 LinuxmacOS, 또는Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
my-db-instance
\ --feature-name s3Export \ --role-arnyour-role-arn
\ --regionyour-region
Windows의 경우:
aws rds add-role-to-db-instance ^ --db-instance-identifier
my-db-instance
^ --feature-name s3Export ^ --role-arnyour-role-arn
^ --regionyour-region