SFTP 커넥터 설정 및 사용 - AWS Transfer Family

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SFTP 커넥터 설정 및 사용

커넥터의 목적은 AWS 스토리지와 파트너의 SFTP 서버 간의 관계를 설정하는 것입니다. Amazon S3에서 파트너 소유의 외부 대상으로 파일을 보낼 수 있습니다. SFTP 커넥터를 사용하여 파트너의 SFTP 서버에서 파일을 검색할 수도 있습니다.

이 자습서에서는 SFTP 커넥터를 설정한 다음 Amazon S3 스토리지와 SFTP 서버 간에 파일을 전송하는 방법을 보여줍니다.

SFTP 커넥터는 에서 SFTP 보안 인증을 검색 AWS Secrets Manager 하여 원격 SFTP 서버에 인증하고 연결을 설정합니다. 커넥터는 원격 서버로 파일을 보내거나 원격 서버에서 파일을 검색하고 Amazon S3에 파일을 저장합니다. IAM 역할은 Amazon S3 버킷 및 Secrets Manager에 저장된 보안 인증 정보에 대한 액세스를 허용하는 데 사용됩니다. Amazon 에 로그인할 수도 있습니다 CloudWatch.

SFTP 커넥터가 Secrets Manager, Amazon S3, CloudWatch 로그, IAM 역할 및 원격 SFTP 서버와 상호 작용하는 방식에 대한 아키텍처 다이어그램입니다.

1단계: 필요한 지원 리소스 생성

SFTP 커넥터를 사용하여 Amazon S3와 원격 SFTP 서버 간에 파일을 복사할 수 있습니다. 이 자습서에서는 AWS Transfer Family 서버를 원격 SFTP 서버로 사용하고 있습니다. 다음 리소스를 생성하고 구성해야 합니다.

Amazon S3 버킷 생성

Amazon S3 버킷을 생성하려면
  1. 에서 AWS Transfer Family 콘솔에 로그인합니다https://console.aws.amazon.com/s3/.

  2. 리전을 선택하고 이름을 입력합니다.

    이 자습서의 경우 버킷은 에 US East (N. Virginia) us-east-1있고 이름은 입니다sftp-server-storage-east.

  3. 기본값을 수락하고 버킷 생성을 선택합니다.

Amazon S3 버킷 생성에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서 S3 버킷을 생성하려면 어떻게 해야 합니까?를 참조하세요.

필요한 권한을 가진 IAM 역할 생성

액세스 역할의 경우 다음 권한이 있는 정책을 생성합니다.

다음 예제에서는 에 액세스하는 데 필요한 권한을 부여합니다.DOC-EXAMPLE-BUCKET Amazon S3의 와 Secrets Manager에 저장된 지정된 보안 암호입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters" } ] }

다음과 같이 항목을 바꿉니다.

  • 에 대해 DOC-EXAMPLE-BUCKET, 자습서에서는 를 사용합니다s3-storage-east.

  • 에 대해 region, 자습서에서는 를 사용합니다us-east-1.

  • 에 대해 account-id에서 ID를 AWS 계정 사용합니다.

  • 에 대해 SecretName-6RandomCharacters, 이름은 using sftp-connector1입니다(비밀에 6개의 무작위 문자가 있음).

또한 이 역할에 사용자의 전송 요청을 처리할 때 커넥터가 리소스에 액세스할 수 있는 신뢰 관계가 포함되어 있는지 확인해야 합니다. 신뢰 관계 설정에 대한 자세한 내용은 신뢰 관계를 구축하기 위해을 참조하세요.

참고

자습서에서 사용 중인 역할에 대한 세부 정보는 섹션을 참조하세요결합된 사용자 및 액세스 역할.

에서 보안 암호 생성 및 저장 AWS Secrets Manager

SFTP 커넥터의 사용자 보안 인증을 저장하려면 Secrets Manager에 보안 암호를 저장해야 합니다. 암호, SSH 프라이빗 키 또는 둘 다를 사용할 수 있습니다. 자습서에서는 프라이빗 키를 사용합니다.

참고

Secrets Manager에 암호를 저장하면 에 요금이 AWS 계정 발생합니다. 요금에 대한 자세한 내용은 AWS Secrets Manager 요금을 참조하세요.

보안 암호를 저장하는 절차를 시작하기 전에 프라이빗 키를 검색하고 형식을 지정합니다. 프라이빗 키는 원격 SFTP 서버의 사용자에 대해 구성된 퍼블릭 키와 일치해야 합니다. 자습서의 경우 프라이빗 키는 원격 서버로 사용 중인 Transfer Family SFTP 서버에 테스트 사용자를 위해 저장된 퍼블릭 키와 일치해야 합니다.

이렇게 하려면 다음 명령을 실행합니다.

jq -sR . path-to-private-key-file

예를 들어 프라이빗 키 파일이 에 있는 경우 ~/.ssh/sftp-testuser-privatekey명령은 다음과 같습니다.

jq -sR . ~/.ssh/sftp-testuser-privatekey

이렇게 하면 키를 올바른 형식(새 줄 문자가 포함된)으로 표준 출력으로 출력합니다. 다음 절차(6단계)에 붙여넣어야 하므로 이 텍스트를 어딘가에 복사합니다.

SFTP 커넥터의 Secrets Manager에 사용자 자격 증명을 저장하려면
  1. 에 로그인 AWS Management Console 하고 에서 AWS Secrets Manager 콘솔을 엽니다https://console.aws.amazon.com/secretsmanager/.

  2. 왼쪽 탐색 창에서 암호를 선택합니다.

  3. 암호 페이지에서 새 암호 저장을 선택합니다.

  4. 암호 선택 페이지의 암호 타입에서 다른 타입의 암호를 선택합니다.

  5. 키/값 쌍 섹션에서 키/값 탭을 선택합니다.

    • - Username를 입력합니다.

    • - 사용자 이름인 를 입력합니다sftp-testuser.

  6. 키를 입력하려면 일반 텍스트 탭을 사용하는 것이 좋습니다.

    1. 행 추가를 선택한 다음 를 입력합니다PrivateKey.

    2. 일반 텍스트 탭을 선택합니다. 필드에는 이제 다음 텍스트가 포함됩니다.

      {"Username":"sftp-testuser","PrivateKey":""}
    3. 프라이빗 키(이전에 저장됨)의 텍스트를 빈 큰따옴표(“”) 사이에 붙여 넣습니다.

      화면은 다음과 같아야 합니다(키 데이터는 회색으로 표시됨).

      사용자 이름과 프라이빗 키를 보여주는 일반 텍스트의 보안 암호입니다.
  7. Next(다음)를 선택합니다.

  8. 보안 암호 구성 페이지에서 보안 암호의 이름을 입력합니다. 이 자습서에서는 보안 암호 의 이름을 지정합니다aws/transfer/sftp-connector1.

  9. 다음을 선택한 후 교체 구성 페이지의 기본값을 그대로 사용합니다. 그 다음 다음을 선택합니다.

  10. 검토 페이지에서 저장을 선택하여 암호를 만들고 저장합니다.

2단계: SFTP 커넥터 생성 및 테스트

이 섹션에서는 이전에 생성한 모든 리소스를 사용하는 SFTP 커넥터를 생성합니다. 자세한 내용은 SFTP 커넥터 구성를 참조하세요.

SFTP 커넥터를 생성하려면
  1. 에서 AWS Transfer Family 콘솔을 엽니다https://console.aws.amazon.com/transfer/.

  2. 왼쪽 탐색 창에서 커넥터를 선택한 다음 커넥터 생성을 선택합니다.

  3. 커넥터 유형에 SFTP 대해 를 선택하여 SFTP 커넥터를 생성한 다음 다음 를 선택합니다.

    Transfer Family 콘솔에는 커넥터 타입을 선택할 수 있는 커넥터 생성 페이지가 표시됩니다. SFTP 가 선택되었습니다.
  4. 커넥터 구성 섹션에서 다음 정보를 제공합니다:

    • 에 원격 SFTP 서버의 URL를 URL입력합니다. 자습서의 경우 원격 서버로 사용 중인 URL Transfer Family SFTP 서버의 를 입력합니다.

      sftp://s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

      Replace 1111aaaa2222bbbb3 Transfer Family 서버 ID를 사용합니다.

    • 액세스 역할 에 앞서 생성한 역할 를 입력합니다sftp-connector-role.

    • 로깅 역할 에서 를 선택합니다AWSTransferLoggingAccess.

      참고

      AWSTransferLoggingAccess 는 AWS 관리형 정책입니다. 이 정책은 에 자세히 설명되어 있습니다AWS 관리형 정책: AWSTransferLoggingAccess.

    SFTP 커넥터 구성 설정을 보여주는 Transfer Family 커넥터 콘솔입니다.
  5. SFTP 구성 섹션에서 다음 정보를 제공합니다.

    • 커넥터 자격 증명 에서 SFTP 자격 증명이 포함된 Secrets Manager 리소스의 이름을 선택합니다. 자습서에서 를 선택합니다aws/transfer/sftp-connector1.

    • 신뢰할 수 있는 호스트 키 의 경우 호스트 키의 퍼블릭 부분에 붙여 넣습니다. SFTP 서버에 ssh-keyscan 대해 를 실행하여 이 키를 검색할 수 있습니다. 신뢰할 수 있는 호스트 키를 포맷하고 저장하는 방법에 대한 자세한 내용은 섹션을 참조하세요. SftpConnectorConfig 데이터 유형 설명서.

    SFTP 구성 설정을 보여주는 Transfer Family SFTP 커넥터 콘솔입니다.
  6. 모든 설정을 확인한 후 커넥터 생성을 선택하여 SFTP 커넥터를 생성합니다.

SFTP 커넥터를 생성한 후에는 새 커넥터를 사용하여 파일을 전송하기 전에 테스트하는 것이 좋습니다.

Test a connector using the console
SFTP 커넥터를 테스트하려면
  1. 에서 AWS Transfer Family 콘솔을 엽니다https://console.aws.amazon.com/transfer/.

  2. 왼쪽 탐색 창에서 커넥터를 선택하고 커넥터를 선택합니다.

  3. 작업 메뉴에서 테스트 연겨을 선택합니다.

    선택한 SFTP 커넥터를 보여주는 Transfer Family 콘솔과 연결 테스트 연결 작업이 강조 표시됩니다.

시스템은 테스트의 통과 또는 실패 여부를 나타내는 메시지를 반환합니다. 테스트가 실패하면 시스템은 테스트 실패 이유를 기반으로 오류 메시지를 제공합니다.

성공적인 테스트를 보여주는 SFTP 커넥터 테스트 연결 패널입니다.
실패한 테스트를 보여주는 SFTP 커넥터 테스트 연결 패널: 오류 메시지는 커넥터의 액세스 역할이 잘못되었음을 나타냅니다.
Test a connector using the CLI

를 사용하여 커넥터를 테스트하려면 명령 프롬프트에서 다음 명령을 AWS Command Line Interface실행합니다(교체 connector-id 실제 커넥터 ID 포함):

aws transfer test-connection --connector-id c-connector-id

테스트에 성공하면 다음 줄이 반환됩니다.

{ "Status": "OK", "StatusMessage": "Connection succeeded" }

테스트에 실패하면 다음과 같은 설명 오류 메시지가 표시됩니다.

{ "Status": "ERROR", "StatusMessage": "Unable to assume the configured access role" }

3단계: SFTP 커넥터를 사용하여 파일 전송 및 검색

간소화를 위해 Amazon S3 버킷에 파일이 이미 있다고 가정합니다.

참고

자습서에서는 소스 및 대상 스토리지 위치 모두에 Amazon S3 버킷을 사용합니다. SFTP 서버가 Amazon S3 스토리지를 사용하지 않는 경우 다음 명령sftp-server-storage-east에서 볼 수 있는 위치에 관계없이 경로를 SFTP 서버에서 액세스할 수 있는 파일 위치의 경로로 바꿀 수 있습니다.

  • Amazon S3 스토리지SEND-to-SERVER.txt에서 SFTP 서버로 라는 파일을 보냅니다.

  • RETRIEVE-to-S3.txt SFTP 서버에서 Amazon S3 스토리지로 라는 파일을 검색합니다.

참고

다음 명령에서 를 바꿉니다.connector-id 커넥터 ID를 사용합니다.

먼저 Amazon S3 버킷에서 원격 SFTP 서버로 파일을 보냅니다. 명령 프롬프트에서 다음 명령을 실행합니다.

aws transfer start-file-transfer --connector-id c-connector-id --send-file-paths "/s3-storage-east/SEND-to-SERVER.txt" / --remote-directory-path "/sftp-server-storage-east/incoming"

이제 sftp-server-storage-east 버킷이 이렇게 보일 것입니다.

새로 전송된 파일이 있는 SFTP 서버 버킷입니다.

파일이 예상대로 표시되지 않으면 CloudWatch 로그를 확인합니다.

CloudWatch 로그를 확인하려면
  1. 에서 Amazon CloudWatch 콘솔 열기 https://console.aws.amazon.com/cloudwatch/

  2. 왼쪽 탐색 메뉴에서 로그 그룹을 선택합니다.

  3. 검색 창에 커넥터 ID를 입력하여 로그를 찾습니다.

  4. 검색에서 반환되는 로그 스트림을 선택합니다.

  5. 최신 로그 항목을 확장합니다.

성공하면 로그 항목은 다음과 같습니다.

{ "operation": "SEND", "timestamp": "2023-12-18T15:26:57.346283Z", "connector-id": "connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/s3-storage-east/SEND-to-SERVER.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:26:56.915864Z", "end-time": "2023-12-18T15:26:57.298122Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/connector-id", "remote-directory-path": "/sftp-server-storage-east/incoming" }

파일 전송이 실패하면 로그 항목에 문제를 지정하는 오류 메시지가 포함됩니다. 오류의 일반적인 원인은 IAM 권한 문제와 잘못된 파일 경로입니다.

다음으로 SFTP 서버에서 Amazon S3 버킷으로 파일을 검색합니다. 명령 프롬프트에서 다음 명령을 실행합니다.

aws transfer start-file-transfer --connector-id c-connector-id --retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/s3-storage-east/incoming"

전송에 성공하면 Amazon S3 버킷에 다음과 같이 전송된 파일이 포함됩니다.

새로 전송된 파일이 있는 Amazon S3 버킷입니다.

성공하면 로그 항목은 다음과 같습니다.

{ "operation": "RETRIEVE", "timestamp": "2023-12-18T15:36:40.017800Z", "connector-id": "c-connector-id", "transfer-id": "transfer-id", "file-transfer-id": "transfer-id/file-transfer-id", "url": "sftp://s-server-id.server.transfer.us-east-1.amazonaws.com", "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:36:39.727626Z", "end-time": "2023-12-18T15:36:39.895726Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/c-connector-id", "local-directory-path": "/s3-storage-east/incoming" }

원격 서버로 사용할 Transfer Family SFTP 서버를 생성하는 절차

다음은 이 자습서의 원격 서버 역할을 하는 Transfer Family SFTP 서버를 생성하는 단계를 간략하게 설명합니다. 유의할 사항:

  • Transfer Family 서버를 사용하여 원격 SFTP 서버를 나타냅니다. 일반적인 SFTP 커넥터 사용자에게는 자체 원격 SFTP 서버가 있습니다. Transfer Family SFTP 서버 및 사용자 생성을 참조하세요.

  • Transfer Family 서버를 사용하기 때문에 서비스 관리형 SFTP 사용자도 사용하고 있습니다. 또한 간소화를 위해 이 사용자가 Transfer Family 서버에 액세스하는 데 필요한 권한을 커넥터를 사용하는 데 필요한 권한과 결합했습니다. 다시 말하지만 대부분의 SFTP 커넥터 사용 사례에는 Transfer Family 서버와 연결되지 않은 별도의 SFTP 사용자가 있습니다. Transfer Family SFTP 서버 및 사용자 생성을 참조하세요.

  • 자습서의 경우 원격 SFTP 서버에 Amazon S3 스토리지를 사용하므로 한 버킷에서 다른 버킷으로 파일을 전송할 수 있도록 두 번째 버킷 s3-storage-east을 생성해야 합니다.

Transfer Family SFTP 서버 및 사용자 생성

사용자가 있는 SFTP 서버가 이미 있으므로 대부분의 사용자는 Transfer Family 서버와 사용자를 생성할 필요가 없으며 이 서버를 사용하여 파일을 주고 받을 SFTP 수 있습니다. 그러나 이 자습서에서는 간소화를 위해 Transfer Family 서버를 사용하여 원격 SFTP 서버로 작동합니다.

에 설명된 절차에 따라 서버를 SFTP활성화 서버 생성 생성하고 사용자를 3단계: 서비스 관리 사용자 추가 추가합니다. 자습서에서 사용 중인 사용자 세부 정보는 다음과 같습니다.

  • 서비스 관리형 사용자 를 생성합니다sftp-testuser.

    • 홈 디렉터리를 로 설정 /sftp-server-storage-east/sftp-testuser

    • 사용자를 생성할 때 퍼블릭 키를 저장합니다. 나중에 Secrets Manager에서 보안 암호를 생성할 때 해당 프라이빗 키를 제공해야 합니다.

  • 역할: sftp-connector-role. 자습서의 경우 SFTP 사용자와 SFTP 커넥터 액세스 모두에 동일한 IAM 역할을 사용하고 있습니다. 조직의 커넥터를 생성할 때 별도의 사용자 및 액세스 역할이 있을 수 있습니다.

  • 서버 호스트 키: 커넥터를 생성할 때 서버 호스트 키를 사용해야 합니다. 서버에 ssh-keyscan 대해 를 실행하여 이 키를 검색할 수 있습니다. 예를 들어 서버 ID가 s-1111aaaa2222bbbb3이고 엔드포인트가 에 있는 경우 us-east-1다음 명령은 서버 호스트 키를 검색합니다.

    ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com

    2단계: SFTP 커넥터 생성 및 테스트 절차에 붙여넣어야 하므로 이 텍스트를 어딘가에 복사합니다.

결합된 사용자 및 액세스 역할

자습서에서는 하나의 결합된 역할을 사용합니다. 이 역할은 SFTP 사용자뿐만 아니라 커넥터에 대한 액세스에도 사용됩니다. 다음 예제에는 자습서에서 작업을 수행하려는 경우 이 역할에 대한 세부 정보가 포함되어 있습니다.

다음 예제에서는 Amazon S3의 두 버킷과 Secrets Manager에 aws/transfer/sftp-connector1 저장된 이라는 이름의 보안 암호에 액세스하는 데 필요한 권한을 부여합니다. 자습서의 경우 이 역할의 이름은 입니다sftp-connector-role.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::sftp-server-storage-east", "arn:aws:s3:::s3-storage-east" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": [ "arn:aws:s3:::sftp-server-storage-east/*", "arn:aws:s3:::s3-storage-east/*" ] }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:500655546075:secret:aws/transfer/sftp-connector1-6RandomCharacters" } ] }

Transfer Family에 대한 역할 생성에 대한 전체 세부 정보는 에 설명된 절차에 따라 역할을 사용자 역할 생성 생성합니다.