Amazon Web Services 한국 블로그

AWS Transfer for SFTP – Amazon S3를 위한 SFTP 서비스 출시 (서울 리전 포함)

SFTP(Secure File Transfer Protocol)는 오랫동안 많은기업에서 데이터 처리 및 파트너 통합 워크플로에 사용되고 있습니다. 이러한 시스템은 “레거시”로 무시되기 쉽지만 실상은 유용한 용도로 사용되고 있으며 당분간은 계속해서 사용될 것입니다. AWS는 원활하고 중단 없는 방식으로 이러한 워크플로를 클라우드로 이동할 수 있는 기능을 제공하고자 합니다.

AWS Transfer for SFTP

이번 AWS re:Invent에서 출시하는 AWS Transfer for SFTP는 완전 관리형의 고가용성 SFTP 서비스입니다. 서버를 생성하고, 사용자 계정을 설정하고, 서버를 하나 이상의 Amazon Simple Storage Service(S3) 버킷에 연결하기만 하면 사용자 자격 증명, 권한 및 키를 세부적으로 제어할 수 있습니다. Transfer for SFTP 안에서 사용자를 생성하거나 기존 자격 증명 공급자를 사용할 수 있습니다. 또한 IAM 정책을 사용하여 각 사용자에게 부여되는 액세스 레벨을 제어할 수 있습니다. 기존 DNS 이름과 SSH 퍼블릭 키를 사용해 Transfer for SFTP로 손쉽게 마이그레이션할 수도 있습니다. 회사의 고객 및 파트너는 연결 상태를 유지할 수 있으며 기존 워크플로를 변경하지 않고 평상시와 마찬가지로 전송 작업을 계속할 수 있습니다.

여러분은 이제 SFTP 프로토콜로 S3 버킷에 완벽하게 액세스하고 다수의 다양한 S3 기능(예: 수명 주기 정책, 다수의 스토리지 클래스, 다수의 서버 측 암호화 옵션 버전 관리 등)을 사용할 수 있습니다. AWS Lambda 함수를 작성하여 수신 파일을 업로드되는 즉시 처리하고, Amazon Athena를 사용하여 파일을 원래 위치에서 쿼리하고, 기존 데이터 수집 프로세스에 손쉽게 연결하는 “지능형” FTP 사이트를 구축할 수 있습니다. 아웃바운드 측에서는 다른 AWS 서비스를 사용하여 보고서, 설명서, 매니페스트, 사용자 지정 소프트웨어 빌드 등을 생성한 다음 S3에 저장하여 제어된 방식으로 고객 및 파트너에게 배포할 수 있습니다.

서버 생성

시작하려면 AWS Transfer for SFTP 콘솔을 열고 [Create server]를 클릭합니다.

Transfer for SFTP에서 사용자 이름과 암호를 관리하거나 API Gateway를 통해 기존 LDAP 또는 Active Directory 자격 증명 공급자에 액세스할 수 있습니다. Amazon Route 53 DNS 별칭 또는 기존 호스트 이름을 사용할 수 있으며 서버에 태그를 지정할 수 있습니다. 기본값으로 시작하고 [Create server]를 클릭하여 SFTP 서버를 실제로 생성합니다.

몇 분 안에 서버가 가동되고 실행됩니다.

이제 다수의 사용자를 추가할 수 있습니다! 서버를 선택하고 [Add user]를 클릭한 다음 사용자 이름을 입력하고 홈 디렉터리에서 S3 버킷(필요한 경우 접두사 사용)을 선택한 후 사용자에게 필요한 버킷 액세스 권한을 제공하는 IAM 역할을 선택합니다. SSH 퍼블릭 키(ssh-keygen으로 생성됨)를 붙여넣고 [Add]를 클릭합니다.

이제 모든 준비가 끝났습니다. 콘솔에서 서버 엔드포인트를 검색하고 첫 번째 sftp 명령을 실행합니다.

S3 버킷의 jeff/ 섹션에 파일이 즉시 표시됩니다.

Lambda 함수를 버킷에 연결하고, 업로드 후 처리 작업 같은 원하는 모든 작업을 수행할 수 있습니다. 예를 들어 업로드한 모든 이미지를 Amazon Rekognition을 통해 실행하고 포함된 객체의 유형에 따라 서로 다른 대상 중 하나로 라우팅할 수 있으며 Amazon Comprehend를 통해 오디오 파일을 실행하여 음성-텍스트 변환 작업을 수행할 수 있습니다.

IAM을 통한 완벽한 제어

바로 요점을 설명하자면 IAM 역할에는 다음과 같이 매우 단순한 정책이 사용됩니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::data-transfer-inbound"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::data-transfer-inbound/jeff/*"
        }
    ]
}

동일한 서버에서 많은 수의 사용자를 호스팅할 계획이라면 다음과 같은 scope-down 정책을 사용할 수 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListHomeDir",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::${transfer:HomeBucket}"
        },
        {
            "Sid": "AWSTransferRequirements",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*"
        }
    ]
}

${transfer:HomeBucket}${transfer:HomeDirectory} 정책 변수는 scope-down 정책이 평가될 때 각 사용자에게 적절한 값으로 설정됩니다. 따라서 각 사용자에게 적절하게 사용자 지정되는 동일한 정책을 사용할 수 있습니다.

알아 두실 사항

다음은 AWS Transfer for SFTP와 관련하여 숙지해야 할 몇 가지 정보입니다.

프로그래밍 방식 액세스 – API 및 CLI 명령의 전체 세트를 사용할 수 있습니다. 예를 들어 단일의 단순한 명령을 사용하여 서버를 생성할 수 있습니다.

$ aws transfer create-server --identity-provider-type SERVICE_MANAGED 
-------------------------------------
|           CreateServer            |
+-----------+-----------------------+
|  ServerId |  s-b445dcff7f164c73a  |
+-----------+-----------------------+

list-servers, start-server, stop-server, create-userlist-users 등의 다른 많은 명령을 사용할 수도 있습니다.

CloudWatch  – 필요에 따라 각 서버에서 자세한 액세스 로그를 Amazon CloudWatch로 전송할 수 있습니다. 각 SFTP 세션에 대한 개별 로그 스트림과 인증 오류에 대한 로그 스트림이 하나 더 있습니다.

대체 자격 증명 공급자 – 위에서는 기본 제공되는 사용자 관리를 보여드렸는데, 기존 LDAP 또는 Active Directory를 활용하는 대체 자격 증명 공급자에 액세스할 수도 있습니다.

요금 – 실행되는 각 서버에 대한 시간당 요금과 GB당 데이터 업로드 및 다운로드 요금을 지불합니다.

지금 이용 가능
AWS Transfer for SFTP는 오늘부터 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 미국 서부(캘리포니아 북부), 캐나다(중부), EU(아일랜드), EU(파리), EU(프랑크푸르트), EU(런던), 아시아 태평양(도쿄), 아시아 태평양(싱가포르), 아시아 태평양(시드니)아시아 태평양(서울) 리전에서 사용할 수 있습니다.

Jeff;

이 글은 AWS News Blog의 New – AWS Transfer for SFTP – Fully Managed SFTP Service for Amazon S3의 한국어 번역으로 정도현 AWS 테크니컬 트레이너가 감수하였습니다.