RDS for SQL Server와 S3를 통합하기 위한 사전 요구 사항
시작하기 전에, 사용하려는 S3 버킷을 찾거나 생성하십시오. 또한 RDS DB 인스턴스가 S3 버킷에 액세스할 수 있도록 권한을 추가하십시오. 이 액세스를 구성하려면 IAM 정책과 IAM 역할을 모두 생성하십시오.
Amazon S3 액세스를 위한 IAM 정책을 생성하려면
-
IAM Management Console
의 탐색 창에서 정책을 선택합니다. -
새 정책을 생성하고 다음 단계에 대해 시각적 편집기 탭을 사용하십시오.
-
서비스에
S3
를 입력한 후 S3 서비스를 선택하십시오. -
작업에서 DB 인스턴스에 필요한 액세스 권한을 부여하려면 다음을 선택하십시오.
-
ListAllMyBuckets
– 필수 -
ListBucket
– 필수 -
GetBucketACL
– 필수 -
GetBucketLocation
– 필수 -
GetObject
– S3에서 로 파일을 다운로드하는 데 필요D:\S3\
-
PutObject
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요 -
ListMultipartUploadParts
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요 -
AbortMultipartUpload
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요
-
-
리소스의 경우, 표시되는 옵션은 이전 단계에서 선택한 작업에 따라 다릅니다. 버킷, 객체 또는 두 항목 모두의 옵션이 표시될 수 있습니다. 이들 각각에 대해 적절한 Amazon 리소스 이름(ARN)을 추가하십시오.
버킷의 경우 사용할 버킷의 ARN을 추가하십시오. 예를 들어, 버킷 이름이
amzn-s3-demo-bucket
인 경우 ARN을arn:aws:s3:::
으로 설정하세요.amzn-s3-demo-bucket
객체의 경우, 버킷의 ARN을 입력한 후 다음 중 하나를 선택하십시오.
-
지정된 버킷의 모든 파일에 대한 액세스 권한을 부여하려면 버킷 이름 및 객체 이름에 대해 동일하게 모두를 선택하십시오.
-
버킷의 특정 파일 또는 폴더에 대한 액세스 권한을 부여하려면 SQL Server가 액세스할 특정 버킷과 객체의 ARN을 제공하십시오.
-
-
정책 생성을 완료할 때까지 콘솔의 지침을 따르십시오.
위의 내용은 정책 설정을 위한 약어 형태의 안내서입니다. IAM 정책 생성에 대한 자세한 지침은 IAM 사용 설명서에서 IAM 정책 생성을 참조하세요.
이전 절차의 IAM 정책을 사용하는 IAM 역할을 생성하려면
-
IAM Management Console
의 탐색 창에서 역할을 선택합니다. -
새 IAM 역할을 생성하고 콘솔에 표시되는 다음 옵션을 선택하십시오.
-
AWS 서비스
-
RDS
-
RDS – Add Role to Database(데이터베이스에 역할 추가)
그런 다음 하단의 다음: 권한을 선택합니다.
-
-
Attach permissions policies(권한 정책 연결)에 이전에 생성한 IAM 정책의 이름을 입력하십시오. 그런 다음 목록에서 그 정책을 선택합니다.
-
역할 생성을 완료할 때까지 콘솔의 지침을 따르십시오.
위의 내용은 역할 설정을 위한 약어 형태의 안내서입니다. 역할 생성에 대한 자세한 지침은 IAM 사용 설명서에서 IAM 역할을 참조하세요.
Amazon RDS에 Amazon S3 버킷에 대한 액세스 권한을 부여하려면 다음 프로세스를 사용합니다.
-
Amazon RDS에 S3 버킷 액세스 권한을 부여하는 IAM 정책을 생성합니다.
-
Amazon RDS가 S3 버킷에 액세스하기 위해 사용자 대신 가정할 수 있는 IAM 역할을 만듭니다.
자세한 내용은 IAM 사용 설명서의 IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하십시오.
-
생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.
IAM 정책을 생성하려면
DB 인스턴스에 필요한 액세스 권한을 부여하려면 적절한 조치를 포함하십시오.
-
ListAllMyBuckets
– 필수 -
ListBucket
– 필수 -
GetBucketACL
– 필수 -
GetBucketLocation
– 필수 -
GetObject
– S3에서 로 파일을 다운로드하는 데 필요D:\S3\
-
PutObject
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요 -
ListMultipartUploadParts
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요 -
AbortMultipartUpload
–D:\S3\
에서 S3로 파일을 업로드하는 데 필요
-
다음 AWS CLI 명령은 이 옵션으로
rds-s3-integration-policy
라는 IAM 정책을 만듭니다.amzn-s3-demo-bucket
이라는 버킷에 대한 액세스 권한을 부여합니다.대상 LinuxmacOS, 또는Unix:
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }'Windows의 경우:
행 끝을 인터페이스에서 지원하는 것으로 바꾸십시오(
^
대신\
). 또한 Windows에서는\
로 모든 큰 따옴표를 이스케이프해야 합니다. JSON에서 따옴표를 이스케이프하지 않으려면, 파일에 대신 저장하고 파라미터로 전달하면 됩니다.먼저 다음 권한 정책을 사용하여
policy.json
파일을 생성하십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }그리고 다음 명령을 사용하여 정책을 만듭니다.
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document file://file_path
/assume_role_policy.json -
정책을 만든 후에 정책의 Amazon 리소스 이름(ARN)을 기록하십시오. 이후 단계에 이 ARN이 필요합니다.
IAM 역할을 생성하려면
-
다음 AWS CLI 명령은 이 목적으로
rds-s3-integration-role
IAM 역할을 생성합니다.대상 LinuxmacOS, 또는Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'Windows의 경우:
행 끝을 인터페이스에서 지원하는 것으로 바꾸십시오(
^
대신\
). 또한 Windows에서는\
로 모든 큰 따옴표를 이스케이프해야 합니다. JSON에서 따옴표를 이스케이프하지 않으려면, 파일에 대신 저장하고 파라미터로 전달하면 됩니다.먼저, 다음 정책이 포함된
assume_role_policy.json
파일을 생성합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
그러고 나서 다음 명령을 사용하여 IAM 역할을 만듭니다.
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document file://file_path
/assume_role_policy.json예 전역 조건 컨텍스트 키를 사용하여 IAM 역할 생성
서비스 권한을 특정 리소스로 제한하는 리소스 기반 정책의
aws:SourceArn
및aws:SourceAccount
전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 혼동된 대리자 문제를 방지하는 가장 효과적인 방법입니다.전역 조건 컨텍스트 키를 모두 사용하고
aws:SourceArn
값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우aws:SourceAccount
값과aws:SourceArn
값의 계정이 동일한 정책 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.-
단일 리소스에 대한 교차 서비스 액세스를 원하는 경우
aws:SourceArn
을 사용하세요. -
해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우
aws:SourceAccount
를 사용하세요.
정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된
aws:SourceArn
전역 조건 컨텍스트 키를 사용해야 합니다. S3 통합의 경우 다음 예와 같이 DB 인스턴스 ARN을 포함해야 합니다.대상 LinuxmacOS, 또는Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region
:my_account_ID
:db:db_instance_identifier
" } } } ] }'Windows의 경우:
assume_role_policy.json
에 전역 조건 컨텍스트 키를 추가합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:
Region
:my_account_ID
:db:db_instance_identifier
" } } } ] } -
IAM 역할에 IAM 정책 연결
-
다음 AWS CLI 명령은 정책을
rds-s3-integration-role
이라는 역할에 연결합니다.
을 이전 단계에서 기록한 정책 ARN으로 바꾸세요.your-policy-arn
대상 LinuxmacOS, 또는Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
Windows의 경우:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role