내용으로 건너뛰기

다른 AWS 계정에 있는 Amazon S3 버킷을 사용하도록 AWS Transfer Family 서버를 구성하려면 어떻게 해야 합니까?

4분 분량
0

계정 A의 AWS Transfer Family 서버에서 다른 계정, 즉 계정 B의 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스하기를 원합니다. 버킷에 대한 교차 계정 액세스 권한이 있는 서버를 설정하려고 합니다.

간략한 설명

다음 단계를 따르십시오.

  1. 계정 A에서 버킷에 액세스할 수 있는 AWS Identity and Access Management(IAM) 역할을 만듭니다.
  2. 계정 B의 IAM 역할에 교차 계정 액세스 권한을 부여하도록 버킷 정책을 업데이트합니다.
  3. 계정 A의 IAM 역할로 구성된 Transfer Family 서버 사용자를 만듭니다.
  4. 계정 A의 Transfer Family 서버 사용자가 계정 B의 S3 버킷에 액세스할 수 있는지 확인합니다.
  5. (선택 사항) S3 객체 소유권을 계정 B에서 선호하는 버킷 소유자로 설정합니다.

참고: AWS Transfer Family 콘솔에는 동일한 계정의 Amazon S3 버킷만 표시됩니다. 다른 계정의 버킷과 함께 Transfer Family 서버를 사용하려면 AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용해야 합니다.

해결 방법

계정 A에서 버킷에 액세스할 수 있는 IAM 역할 만들기

서버 사용자에 대한 IAM 역할을 만듭니다. 역할의 IAM 정책에는 다음을 사용하십시오.

참고: destination-DOC-EXAMPLE-BUCKET을 서버에서 액세스하려는 S3 버킷의 이름으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowListingBucketReadandWriteandDelete",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:DeleteObjectVersion",
        "s3:DeleteObject",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*",
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET"
      ]
    }
  ]
}

참고: Transfer Family가 교차 계정 S3를 업로드하려면 s3:PutObjectAcl 권한이 필요합니다.

IAM 역할을 만든 후 다음과 비슷한 get-role 명령을 실행하여 역할 ID를 가져옵니다.

$ aws iam get-role --role-name "ROLE_NAME"

다음 단계에는 역할 ID가 필요합니다.

계정 B의 IAM 역할에 교차 계정 액세스 권한을 부여하도록 버킷 정책 업데이트

대상 버킷의 정책을 수정하여 만든 IAM 역할에 액세스 권한을 부여합니다. 다음과 비슷한 버킷 정책을 사용할 수 있습니다.

참고: arn:aws:iam::123456789012:root를 서버가 속한 계정의 Amazon 리소스 이름(ARN)으로 바꾸십시오. destination-DOC-EXAMPLE-BUCKET을 버킷 이름으로 바꾸십시오. AROA1234567890을 만든 IAM 역할의 역할 ID로 바꾸십시오.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BucketPolicyForTransferFamily",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:DeleteObjectVersion",
        "s3:DeleteObject",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "StringLike": {
          "aws:userId": "AROA1234567890:*"
        }
      }
    }
  ]
}

이 예제 정책의 조건 요소는 선택 사항입니다. 지정한 IAM 역할에만 버킷 액세스 권한을 부여하려면 조건 요소를 포함하십시오. 또는 요소를 제거하여 서버가 속한 계정의 모든 IAM 역할 및 사용자에게 액세스 권한을 부여할 수 있습니다.

계정 A의 IAM 역할로 구성된 Transfer Family 서버 사용자 만들기

1.    Transfer Family 서버의 SSH 키를 생성합니다.

2.    서버의 서버 ID를 가져옵니다.

3.    AWS CLI를 사용하여 create-user 명령을 실행합니다. --server-id에 서버 ID를 입력합니다. --role에 만든 IAM 역할의 ARN을 입력합니다. --ssh-public-key-body에 SSH 키를 만들 때 생성한 .pub 파일의 내용을 입력합니다.

$ aws transfer create-user --user-name "MY_SERVER_USER_NAME" --server-id "MY_SERVER_ID"  --role "MY_IAM_ROLE_ARN" --home-directory "/destination-DOC-EXAMPLE-BUCKET/MY_SERVER_USER_NAME" --ssh-public-key-body "CONTENTS_OF_MY_SSH_.PUB_FILE"

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

이 명령은 만든 서버 ID와 사용자를 반환합니다.

{
  "ServerId": "MY_SERVER_ID",
  "UserName": "MY_SERVER_USER_NAME"
}

중요: 서버 사용자의 액세스 권한을 홈 디렉터리로만 제한하려면 IAM에서 범위 축소 정책을 만드십시오. 그런 다음, 서버 사용자의 속성을 편집하여 만든 범위 축소 정책을 적용합니다.

계정 A의 Transfer Family 서버 사용자가 계정 B의 버킷에 액세스할 수 있는지 확인

1.    만든 사용자로 서버에 연결합니다. 예를 들어, 다음 OpenSSH 명령은 SFTP 서버에 연결합니다.

$ sftp -i myserveruser MY_SERVER_USER_NAME@MY_SERVER_ID.server.transfer.us-east-1.amazonaws.com

2.    테스트로 버킷의 홈 디렉터리를 나열합니다. OpenSSH를 사용하는 경우 다음 명령을 실행합니다.

$ ls

명령이 홈 디렉터리를 반환하면 서버 사용자에게 버킷에 대한 교차 계정 액세스 권한이 있는 것입니다.

(선택 사항) S3 객체 소유권을 계정 B에서 선호하는 버킷 소유자로 설정

기본적으로 Amazon S3 객체는 객체를 업로드한 AWS 계정이 소유합니다. 즉, 대상 버킷에 업로드된 객체는 기본적으로 소스 서버의 계정이 소유합니다.

교차 계정 업로드에서 객체를 자동으로 소유하도록 대상 계정을 활성화하려면 대상 버킷의 S3 객체 소유권을 버킷 소유자 선호로 설정합니다. 이렇게 하면 AWS Transfer Family 서버를 통해 업로드된 모든 새 객체를 대상 버킷의 계정이 자동으로 소유합니다.


관련 정보

사용자 만들기(AWS Transfer Family 사용 설명서)

사용자 추가 (AWS Transfer Family 사용 설명서)

Amazon S3가 요청을 승인하는 방법

AWS 공식업데이트됨 5년 전
댓글 없음