Amazon S3 버킷에 대한 액세스 권한 설정 - Amazon Relational Database Service

Amazon S3 버킷에 대한 액세스 권한 설정

데이터를 Amazon S3으로 내보내려면 PostgreSQL DB 인스턴스에 파일이 저장될 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다.

이렇게 하려면 다음 절차를 따르십시오.

IAM 역할을 통해 PostㅍgreSQL DB 인스턴스에 액세스할 수 있는 권한을 Amazon S3에 부여하려면
  1. IAM 정책을 생성합니다.

    이 정책은 PostgreSQL DB 인스턴스가 Amazon S3에 액세스할 수 있도록 허용하는 권한을 버킷 및 객체에 부여합니다.

    이 정책을 생성하는 과정에서 다음 단계를 수행하십시오.

    1. 다음과 같은 필수 작업을 정책에 포함하여 PostgreSQL DB 인스턴스에서 Amazon S3 버킷으로 파일 전송을 허용합니다.

      • s3:PutObject

      • s3:AbortMultipartUpload

    2. 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/*" ] } ] }'
  2. IAM 역할 생성.

    Amazon RDS이 이 IAM 역할을 수임하여 사용자 대신 Amazon S3 버킷에 액세스할 수 있도록 역할을 생성합니다. 자세한 내용은 IAM 사용 설명서IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하세요.

    서비스 권한을 특정 리소스로 제한하는 리소스 기반 정책의 aws:SourceArnaws: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" } } } ] }'
  3. 생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.

    다음 AWS CLI 명령은 앞서 생성한 정책을 rds-s3-export-role.라는 역할에 연결합니다. your-policy-arn을 이전 단계에서 기록한 정책 ARN으로 바꿉니다.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role
  4. IAM 역할을 DB 인스턴스에 추가합니다. 이렇게 하려면 다음에 설명한 대로 AWS Management Console 또는 AWS CLI를 사용합니다.

콘솔을 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

  2. 세부 정보를 표시하고자 하는 PostgreSQL DB 인스턴스 이름을 선택합니다.

  3. Connectivity & security(연결성 및 보안) 탭에 있는 Manage IAM roles(IAM 역할 관리) 섹션의 이 인스턴스에 IAM 역할 추가에서 추가할 역할을 선택합니다.

  4. 기능에서 s3Export를 선택합니다.

  5. [Add role]을 선택합니다.

CLI를 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
  • 다음 명령을 사용해 my-db-instance라는 PostgreSQL DB 인스턴스에 역할을 추가합니다. your-role-arn을 이전 단계에서 기록한 정책 ARN으로 교체합니다. s3Export 옵션의 값에 대해 --feature-name를 사용합니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Export \ --role-arn your-role-arn \ --region your-region

    Windows의 경우:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Export ^ --role-arn your-role-arn ^ --region your-region