기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Lambda 를 사용하여 자격 증명 공급자 통합
이 주제에서는 사용자 지정 자격 증명 공급자에 연결하는 AWS Lambda 함수를 생성하는 방법을 설명합니다. Okta, Secrets Manager, OneLogin과 같은 사용자 지정 ID 공급자를 사용하거나 권한 부여 및 인증 로직이 포함된 사용자 지정 데이터 저장소를 사용할 수 있습니다.
대부분의 사용 사례에서 사용자 지정 자격 증명 공급자를 구성하는 권장 방법은를 사용하는 것입니다사용자 지정 ID 제공업체 솔루션.
참고
Lambda를 ID 공급자로 사용하는 Transfer Family 서버를 생성하기 전에 함수를 생성해야 합니다. Lambda 함수의 예는 예 Lambda 함수를 참조하세요. 또는 Lambda 함수 템플릿 중 하나를 사용하는 CloudFormation 스택을 배포할 수 있습니다. 또한 Lambda 함수가 Transfer Family를 신뢰하는 리소스 기반 정책을 사용하는지 확인하세요. 정책 예제는 Lambda 리소스 기반 정책을 참조하세요.
-
AWS Transfer Family 콘솔
을 엽니다. -
서버 생성을 선택하여 서버 생성 페이지를 엽니다. ID 제공자 선택를 위해 다음 스크린샷과 같이 사용자 지정 ID 공급자를 선택합니다.
참고
인증 방법은 SFTP를 Transfer Family 서버의 프로토콜 중 하나로 활성화한 경우에만 사용할 수 있습니다.
-
자격 증명 공급자를 연결하는 AWS Lambda 데 사용이라는 기본값이 선택되어 있는지 확인합니다.
-
AWS Lambda 함수에서 Lambda 함수의 이름을 선택합니다.
-
나머지 상자를 채운 다음 서버 만들기를 선택합니다. 서버를 만들기 위한 나머지 단계에 대한 자세한 내용은 SFTP, FTPS 또는 FTP 서버 엔드포인트 구성을 참조하세요.
Lambda 리소스 기반 정책
Transfer Family 서버 및 Lambda ARN을 참조하는 정책이 있어야 합니다. 예를 들어 ID 공급자에 연결되는 Lambda 함수와 함께 다음 정책을 사용할 수 있습니다. 정책은 JSON을 문자열로 이스케이프합니다.
"Policy": "{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "AllowTransferInvocation", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:my-lambda-auth-function", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:transfer:region:account-id:server/server-id" } } } ] }"
참고
상기 예 정책에서 각 사용자 입력 자리 표시자를 자신의 정보로 바꿉니다.
이벤트 메시지 구조
사용자 지정 IDP에 대해 권한 부여자 Lambda 함수로 전송되는 SFTP 서버의 이벤트 메시지 구조는 다음과 같습니다.
{ "username": "value", "password": "value", "protocol": "SFTP", "serverId": "s-abcd123456", "sourceIp": "192.168.0.100" }
서버로 전송되는 로그인 자격 증명의 값인 username과 password의 위치는 어디입니까?
예를 들어, 다음 명령을 입력해서 연결합니다.
sftp bobusa@server_hostname
새 암호를 두 번 입력하라는 메시지가 나타납니다.
Enter password: mysecretpassword
Lambda 함수 내에서 전달된 이벤트를 인쇄하여 Lambda 함수에서 이를 확인할 수 있습니다. 그것은 다음 텍스트 블록과 비슷하게 보여야 합니다.
{ "username": "bobusa", "password": "mysecretpassword", "protocol": "SFTP", "serverId": "s-abcd123456", "sourceIp": "192.168.0.100" }
이벤트 구조는 FTP와 FTPS와 비슷한데, 유일한 차이점은 SFTP라기 보다 오히려 아닌 해당 값이 protocol파라미터에 사용된다는 것입니다.
인증을 위한 Lambda 함수
다양한 인증 전략을 구현하려면 Lambda 함수를 편집하세요. 애플리케이션의 요구 사항을 충족하는 데 도움이 되도록 CloudFormation 스택을 배포할 수 있습니다. 자세한 내용은 개발자 안내서나 AWS Lambda Node.js로 Lambda 함수 구축을 참조하세요.
유효 Lambda 값
다음 표에는 사용자 지정 ID 공급자에 사용되는 Lambda 함수에 대해 Transfer Family가 허용하는 값에 대한 세부 정보가 설명되어 있습니다.
| 값 | 설명 | 필수 |
|---|---|---|
|
|
Amazon S3 버킷 또는 Amazon EFS 파일 시스템에 대한 사용자 액세스를 제어하는 IAM 역할의 Amazon 리소스 이름(ARN)을 지정합니다. 이 역할에 연결된 정책은 Amazon S3 버킷 또는 Amazon EFS 파일 시스템에 대한 파일 송수신 시 사용자에게 제공할 액세스의 수준을 결정합니다. 또한 IAM 역할에는 사용자의 전송 요청을 처리할 때 서버가 해당 리소스에 액세스할 수 있도록 허용하는 신뢰 관계가 포함되어야 합니다. 신뢰 관계 설정에 대한 자세한 내용은 신뢰 관계를 구축하기 위해을 참조하세요. |
필수 |
|
|
Amazon EFS 파일 시스템에 대한 사용자의 액세스를 제어하는 사용자 ID( |
Amazon EFS 백업 스토리지에 필요 |
|
|
이 사용자에게 유효한 SSH 퍼블릭 키 값 목록. 목록이 비어 있으면 유효한 로그인이 아님을 의미합니다. 암호 인증 중에는 반환할 수 없습니다. |
선택 사항 |
|
|
여러 사용자에 대해 동일한 IAM 역할을 사용할 수 있도록 한 사용자에 대한 세션 정책입니다. 이 정책은 Amazon S3 버킷의 부분에 대한 사용자 액세스의 범위를 축소합니다. 사용자 지정 자격 증명 공급자와 함께 세션 정책을 사용하는 방법에 대한 자세한 내용은이 주제의 세션 정책 예제를 참조하세요. |
선택 사항 |
|
|
사용자가 서버에 로그인하는 경우 홈 디렉터리가 될 랜딩 디렉터리(폴더) 타입입니다.
|
선택 사항 |
|
|
사용자에게 표시할 Amazon S3 또는 Amazon EFS 경로 및 키와 이러한 경로 및 키를 사용자에게 시각적으로 표시할 방법을 지정하는 논리적 디렉터리 매핑입니다. |
|
|
|
클라이언트를 사용하여 서버에 로그인하는 경우 랜딩 디렉터리(폴더)입니다. 형식은 스토리지 백엔드에 따라 다릅니다.
중요버킷 이름 또는 Amazon EFS 파일 시스템 ID가 경로에 포함되어야 합니다. 이 정보를 생략하면 파일 전송 중에 "파일을 찾을 수 없음" 오류가 발생합니다. |
선택 사항 |
참고
HomeDirectoryDetails는 JSON 맵의 문자열 표현입니다. 이는 실제 JSON 맵 객체인 PosixProfile과 문자열로 구성된 JSON 배열인 PublicKeys과 대조적입니다. 언어별 세부 정보는 코드 예를 참조하세요.
HomeDirectory 형식 요구 사항
HomeDirectory 파라미터를 사용할 때는 전체 경로 형식을 포함해야 합니다.
-
Amazon S3 스토리지의 경우: 항상 형식으로 버킷 이름 포함
/bucket-name/path -
Amazon EFS 스토리지의 경우: 파일 시스템 ID를 항상 형식으로 포함
/fs-12345/path
"파일을 찾을 수 없음" 오류의 일반적인 원인은 HomeDirectory 경로에서 버킷 이름 또는 EFS 파일 시스템 ID를 생략하는 것입니다. 스토리지 식별자 / 없이 HomeDirectory로 설정하면 인증은 성공하지만 파일 작업은 실패합니다.
예 Lambda 함수
이 섹션에서는 NodeJS와 Python 모두에서 사용할 수 있는 Lambda 함수 몇 가지를 소개합니다.
참고
이 예에서는 사용자, 역할, POSIX 프로필, 암호 및 홈 디렉토리 세부 정보가 모두 예시이므로 실제 값으로 바꿔야 합니다.
구성 테스트
사용자 지정 ID 공급자를 만든 후에는 구성을 테스트해야 합니다.
사용자 인증에 성공하면 테스트 결과 StatusCode:
200 HTTP 응답, 빈 문자열 Message: "" (그렇지 않으면 실패 이유가 포함됨) 및 Response 필드가 반환됩니다.
참고
아래 응답 예에서 Response 필드는 '문자열화' (프로그램 내에서 사용할 수 있는 플랫 JSON 문자열로 변환) 된 JSON 객체이며, 사용자의 역할 및 권한에 대한 세부 정보를 포함합니다.
{ "Response":"{\"Policy\":\"{\\\"Version\\\":\\\"2012-10-17 \\\",\\\"Statement\\\":[{\\\"Sid\\\":\\\"ReadAndListAllBuckets\\\",\\\"Effect\\\":\\\"Allow\\\",\\\"Action\\\":[\\\"s3:ListAllMybuckets\\\",\\\"s3:GetBucketLocation\\\",\\\"s3:ListBucket\\\",\\\"s3:GetObjectVersion\\\",\\\"s3:GetObjectVersion\\\"],\\\"Resource\\\":\\\"*\\\"}]}\",\"Role\":\"arn:aws:iam::000000000000:role/MyUserS3AccessRole\",\"HomeDirectory\":\"/\"}", "StatusCode": 200, "Message": "" }
Lambda 함수 템플릿
인증에 Lambda 함수를 사용하는 AWS CloudFormation 스택을 배포할 수 있습니다. 로그인 자격 증명을 사용하여 사용자를 인증하고 권한을 부여하는 여러 템플릿을 제공합니다. 이러한 템플릿 또는 AWS Lambda 코드를 수정하여 사용자 액세스를 추가로 사용자 지정할 수 있습니다.
참고
템플릿에 FIPS 지원 보안 정책을 지정 AWS CloudFormation 하여를 통해 FIPS 지원 AWS Transfer Family 서버를 생성할 수 있습니다. 사용 가능한 보안 정책은 AWS Transfer Family 서버에 대한 보안 정책에 설명되어 있습니다.
인증에 사용할 AWS CloudFormation 스택을 생성하려면
-
https://console.aws.amazon.com/cloudformation
AWS CloudFormation 콘솔을 엽니다. -
AWS CloudFormation 사용 설명서의 AWS CloudFormation 스택 템플릿 선택에서 기존 템플릿의 스택 배포 지침을 따릅니다.
-
다음 템플릿 중 하나를 사용하여 Transfer Family의 인증에 사용할 Lambda 함수를 생성합니다.
-
에서 사용자 지정 자격 증명 공급자로 사용할를 생성하기 AWS Lambda 위한 기본 템플릿입니다 AWS Transfer Family. 암호 기반 인증을 위해 Amazon Cognito에 대해 인증하며, 퍼블릭 키 기반 인증을 사용하는 경우 Amazon S3 버킷에서 퍼블릭 키가 반환됩니다. 배포 후에는 Lambda 함수 코드를 수정하여 다른 작업을 수행할 수 있습니다.
-
가 AWS Transfer Family 서버 AWS Lambda 와 함께 사용하여 Secrets Manager를 자격 증명 공급자로 통합하는 기본 템플릿입니다. 형식 AWS Secrets Manager 의에 있는 항목에 대해 인증합니다
aws/transfer/. 또한 암호에는 Transfer Family에 반환된 모든 사용자 속성에 대한 키-값 쌍이 들어 있어야 합니다. 배포 후에는 Lambda 함수 코드를 수정하여 다른 작업을 수행할 수 있습니다.server-id/username -
Okta 스택 템플릿
:가 AWS Transfer Family 서버 AWS Lambda 와 함께 사용하여 Okta를 사용자 지정 자격 증명 공급자로 통합하는 기본 템플릿입니다. -
Okta-mfa 스택 템플릿
:가 AWS Transfer Family 서버 AWS Lambda 와 함께 사용하여 Okta를 다중 인증과 통합하는 기본 템플릿으로, 사용자 지정 자격 증명 공급자입니다. -
Azure Active Directory 템플릿
:이 스택에 대한 세부 정보는 블로그 게시물 Authenticating to AWS Transfer Family with Azure Active Directory and AWS Lambda 에 설명되어 있습니다.
스택을 배포한 후에는 CloudFormation 콘솔의 출력 탭에서 스택에 대한 세부 정보를 볼 수 있습니다.
사용자 지정 ID 공급자를 Transfer Family 워크플로에 통합하는 가장 쉬운 방법은 이러한 스택 중 하나를 배포하는 것입니다.
-