BLOG

Okta 활용법… AWS Transfer for SFTP와 함께 ID 제공자로 사용하기
작성일: 2019-07-16

AWS Transfer for SFTP(AWS SFTP)는 보안 쉘 파일 전송 프로토콜(Secure Shell File Transfer Protocol)을 사용할 때 파일 전송 워크로드를 AWS로 옮길 수 있는 완전히 관리되는 서비스입니다. 다양한 산업 분야의 중견 및 스타트업 기업은 애플리케이션을 수정하거나 SFTP 서버를 관리할 필요 없이 AWS SFTP를 사용할 수 있습니다

 

SFTP를 통해 업로드되거나 다운로드된 데이터는 Amazon S3 버킷에서 이용 가능하고 AWS에서 보관 또는 처리 시에 사용할 수 있습니다. 이 서비스는 최종사용자를 관리하는 방법을 지원하는데, 이 사용자는 AWS에 의해 관리되는 SFTP 서버를 통해 파일을 교환하는 유저를 말합니다.

 

지난 4월 AWS Secrets Manager를 통합하여 암호 인증을 사용하는 방법에 대해 설명 드린 적이 있습니다. 이번 게시물에선 Okta의 인증 API를 사용하여 사용자의 IdP로 Okta를 통합하는 방법을 보여드리겠습니다.

 

Okta의 웹 사이트에 따르면 Okta 인증 API는 사용자를 인증하고 다중 요소 등록 및 검증을 수행하며, 잊어 버린 암호를 복구하고 계정 잠금을 해제하는 동작을 제공합니다. 또한 기존 애플리케이션 위에 ID 레이어를 제공하는 독립 실행형 API로도 사용할 수 있습니다.

 

맞춤형 IdP 프라이머

 

SFTP 서버를 만들 때 AWS Lambda 함수가 지원하는 RESTful 인터페이스와 Amazon API Gateway 메서드를 사용하여 기존 IdP를 서비스에 통합할 수 있습니다. 해당 IdP는 Microsoft Active Directory, Okta 또는 사용자가 전체 액세스 프로비저닝 시스템의 일부로 사용하고 있는 사용자 지정 데이터베이스가 될 수 있습니다. AWS SFTP에서 IdP 모드를 사용할 때 사용자는 API 게이트웨이 메서드를 제공하게 됩니다. AWS SFTP는 이 메서드를 호출하여 SFTP 사용자를 인증합니다.

 

다음의 다이어그램과 서술은 해당 솔루션의 전반적인 워크플로우를 요약해주고 있습니다.

  1. 하기 예시처럼 AWS CloudFormation 템플릿을 통해 API 게이트웨이를 사용하여 API를 설정하고, Okta 인증 API를 사용하여 인증을 위한 람다 함수를 설정하십시오.
  2. 다음으로 AWS SFTP 서버를 만들 때 API 게이트웨이 URL을 사용하십시오. 1~2단계는 설정 시 일회성 노력이 필요합니다.
  3. 최종 사용자는 로그인을 시도하여 Okta 사용자 이름과 암호를 제공합니다.
  4. AWS SFTP는 이러한 자격 증명을 서버 생성 시 제공했던 API 게이트웨이 엔드포인트에 전달합니다(1 단계).  API는람다 함수와 통합되어 있습니다.
  5. AWS SFTP 서버는 Lambda 함수가 지원하는 API 게이트웨이 URL을 사용하여 Okta를 쿼리하고 최종 사용자의 암호의 유효성을 검사합니다.
  6. API 게이트웨이의 응답은 최종 사용자에게 권한을 부여하고 S3 버킷에 액세스 권한을 부여합니다.

 

Okta 설정하기

 

시작하려면 Okta org가 필요합니다. 본 게시물을 위해 데모 Okta 계정 과 몇 명의 Okta 사용자를 생성했습니다. SFTP 클라이언트를 사용하여 AWS SFTP 서버에 로그인 할 때 해당 테스트 사용자를 이용할 예정입니다.

 

설치를 위해서 다음 과정을 참고해 주세요.

  • Okta 인증 API URL (예 : https : // <YOUR-OKTA-ENDPOINT> / api / v1 / authn)
  • Okta의 사용자 로그인 도메인 부분 (예: janedoe@amazon.com 의 경우 도메인은 amazon.com입니다.)

 

IAM 역할, 람다 함수 및 API 게이트웨이 설정하기

Amazon S3 버킷이 필요하므로 버킷을 새로 만들거나 기존 버킷을 사용하여 이름을 기록하십시오. 이는 조금 후에 사용할 예정입니다.

 

CloudFormation 템플릿을 다운로드하여 새로운 AWS CloudFormation 스택을 만듭니다.

 

CloudFormation 템플릿은 액세스 및 람다 함수 및 API 게이트웨이에 필요한 IAM 역할을 만듭니다. CloudFormation 스택이 성공적으로 생성되면 API 게이트 웨이 엔드포인트를 호출 할 수 있는 API 게이트웨이 URL 및 호출 역할과 같은 출력을 기록하십시오.

 

AWS SFTP 설정하기

 

  • AWS SFTP를엽니다.
  • 새로운 SFTP 서버에서Create Server를 선택하고 다음 값을 입력합니다:
    • Endpoint 유형으로는 Public을 선택합니다..
    • Identity provider로는 Custom을 선택합니다.
    • Custom provider로는 TransferIdentityProviderUrl 값을 입력합니다. (이전에 사용 된 CloudFormation 템플릿의 출력값)
    • Invocation Role로는 이름에 TransferIdentityProviderRole을 선택합니다.
    • Logging Role로는 이름에 TransferSFTPCloudWatchLogsWriteLogs를 입력합니다. 대
  • Create server을선택 하고 추후 사용할 수 있도록 서버 ID 값을 기록하십시오.
  • 새로 작성된 SFTP 서버에 대해State 열에 Online이 있는지 확인하십시오.

 

테스트하기

 

위의 구성을 테스트하려면 TestIdentityProvider API를 사용할 수 있습니다. AWS SFTP 서버의 엔드포인트, Okta 사용자 이름 및 암호를 제공합니다. 로그인하여 홈 디렉토리에 액세스 할 수 있는지 확인하십시오. 모든 SFTP 클라이언트를 사용하여 액세스 권한을 확인할 수도 있습니다.

 

다음 코드는 AWS CLI를 사용하여 TestIdentityProvider API 를 호출하는 예시입니다.

aws transfer test-identity-provider —server-id <SFTP Transfer Server ID> —user-name <Okta User Name> —user-password <Okta User Password>

The command returns following fields:

 

이 명령은 다음 필드를 반환합니다.

  • Message (문자) – 메시지로서 권한 테스트의 결과.
  • StatusCode (정수) – API 게이트웨이의 응답인 HTTP 상태 코드입니다.
  • Url (문자) – 사용자를 인증하는 데 사용되는 서비스의 엔드포인트입니다.

 

다음 스크린 샷은 성공적인 로그인의 예를 보여줍니다.

 

로그인에 실패하면 다음 스크린 샷과 같이 빈 Message 필드가 나타납니다.

 

이 시점에서 Cyberduck 또는 OpenSSH 클라이언트와 같은 SFTP 클라이언트를 사용하여 AWS SFTP 서버와 Okta의 통합을 테스트 할 수 있습니다. 테스트가 성공적으로 완료된 후 API를 기존 Okta 조직에 연결하고 필요한 액세스 권한을 설정하면 최종 사용자가 서비스를 사용할 수 있습니다.

 

정리하기

 

테스트하는 중이라면 서버를 삭제하고 다른 리소스를 정리하는 것을 잊지 마십시오. 프로덕션 환경에 배포하는 경우 반드시 빌드하십시오.

 

글을 마치며

 

지금까지 Okta의 인증 API를 사용하여 Okta를 사용자의IdP로 통합하는 방법에 대해 설명해 드렸습니다. 이 솔루션으로 이제 여러분은 Okta를 최종 사용자의 맞춤 ID 공급자로 사용하며, 완전히 관리되는 고가용성의 SFTP서비스를 이용하실 수 있습니다. 새로운 서비스 영역으로 들어오시게 된 것을 환영합니다!

 

원문 URL: https://aws.amazon.com/ko/blogs/storage/using-okta-as-an-identity-provider-with-aws-transfer-for-sftp/

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.