8. AuthN, AuthR과 관련된 AWS 서비스
AWS Directory
Service
AWS IAM Amazon
Cognito
Amazon API
Gateway
9. AuthN, AuthR과 관련된 AWS 서비스
AWS Directory
Service
AWS IAM
• 쉽게 Microsoft Active Directory를 AWS 상에서 사용
• 3개의 디렉토리 타입 :
1. Microsoft AD
2. Simple AD
3. AD connector
• 온프리미스 AD와 통합 가능
• AWS리소스에 접근할 수 있는 권한과 인증을 콘트롤
• AuthN : 누가 AWS 리소스를 사용할 수 있는가?
• AuthR : 인증 받은 사용자가 어떤 AWS 리소스에 접근할 수 있는가?
• EC2, Lambda등의 AWS 리소스에 대한 접근 권한에 대한 제어
10. AuthN, AuthR과 관련된 AWS 서비스
• 모바일/웹앱에 대한 사인인, 사인업, 유저 관리
• 소셜 auth와 커스텀 auth 지원
• 여러 디바이스간의 유저 데이터 동기화 기능 제공
• 쉽게 Restful 웹 API를 생성/조작
• API의 관리 용이
• API 리소스 접근 제어를 위해 IAM, 커스텀 Auth 람다함수,
Cognito 유저 풀이 제공 됨
Amazon
Cognito
Amazon API
Gateway
11. 사용 예
AWS Directory
Service
AWS IAM
• 고용자를 위한 in-house 시스템의 계정관리
• IAM과 연계되어 AWS 콘솔에 대한 SSO
• Sharepoint, Amazon WorkMail등 윈도우 기반 비지니스
서비스에 대한 authN 제어
• 관리 콘솔이나 API를 사용하는 사용자에 대해 IAM
유저/그룹을 통해 관리
• EC2 혹은 Lambda로 부터 AWS 리소스로 접근하는
접근권을 제어
12. 사용 예
• 모바일 네이티브 앱 혹은 자바스크립트 브라우저 앱을 위한
Temparary credential 발급으로 AWS 리소스에 접근 가능하게
함
• 만약 authN이 필요하다면, 고객은 3rd 파티 아이디 제공자나
Cognito User Pools를 사용가능
• JSON기반의 웹 API를 생성
• 백앤드 서비스들과 연동 가능
• 만약 authN이 필요하다면, 고객은 IAM, Custom
Authorizer(Lambda function) 혹은 Cognito User Pools
Authorizer 를 이용할 수 있다
Amazon
Cognito
Amazon API
Gateway
오늘의 대상
14. AWS 모바일 서비스로 많은 부담 제거
오늘날 AWS에서 모바일 앱을 개발할 때, 개발자는 다음을 더 중요시
여깁니다.
모바일 앱을 더 경쟁력있게 만들기 위한 기능 고민
대신…
뒷단 서버와 인프라, 플랫폼, 언어 등을 선택, 준비하기 위한 많은 노력
15. AWS Mobile SDKs
AWS Mobile Hub
Authenticate users
Analyze User Behavior
Store and share media
Synchronize data
Deliver media
Amazon Cognito
(Sync)
Amazon Cognito
(Identity)
Amazon S3
Amazon CloudFront
Store data
Amazon DynamoDB
Amazon RDS
Track Retention
Amazon Mobile
Analytics
Send push notifications
Amazon SNS
Mobile Push
Server-side logic
Lambda
Device Farm
Test your app
Amazon Mobile
Analytics
AWS상에서 앱 개발 및 확장
18. 기존 인증 흐름 - federation
STS
5. Receive
AWS
Credentials
3. Assume Role2. OpenID Token
Mobile Client
Cognito
“IDP”
1. Get or Create
Identity
4. Validate
Amazon S3
6. Store Data
19. Cognito Identity
Federation IdentitiesYour User Pools
모바일 앱/웹 앰에 대해 쉽고
안전하게 사인-인, 사인-아웃
기능을 생성할 수 있음
수억명의 사용자까지 쉽게
확대 가능
3rd 파티 ID제공자 (페이스북,
Twitter and SAML 제공자 등)를
통해 로그인 할수 있음.
AWS 리소스에 대한 앱의 접근에
대해 제어할 수 있음
GA : 7/28/2016
20. User Pools
당신의 모바일/웹 앱에 대해
쉽게 사인업, 사인인 기능을
쉽게 추가할 수 있습니다.
쉬운 유저 관리
AWS의 안전에 대한 경험이
녹아 있습니다. 이메일 인증,
MFA 인증의 기능을 쉽게
적용할 수 있습니다.
강화된 안전
유저 디레토리를 손쉽게
생성합니다. 간단하면서,
안전하고, 낮은 비용의 완전
관리형 유저
디렉토리입니다. 수억명까지
쉽게 확장됩니다.
유저 디렉토리 관리
21. 이전에는
부담이 큰 작업
자신의 유저 디렉토리를 만들기 위해 많은 시간과 리소스를 투자해야만 했음
제대로 된 작동이 쉽지 않음
유저 데이터 패스워드에 대한 보안적인 관리 및 처리가 쉽지 않음
확장성의 문제
앱이 성공하고 나면, 디렉토리 인프라를 확장하는 것이 필요하게 됨
22. 유저 시나리오
이메일 혹은 전화번호
확인
패스워드 분실/리셋
유저 sign-up 과 sign-
in
사용자는 이메일 주소나 전화번호를 어카운트 활성화하기 앞서 확인할 수 있다.
사용자는 자신의 패스워드를 변경할 수 있으며 원하는 경우 리셋할 수도 있다
유저는 이메일, 전화번호 혹은 유저 이름과 패스워드로 사인업을 수행한다. 이후
이 정보로 사인인 할 수 있다
사용자 프로파일 사용자 프로파일을 가져오거나 업데이트 할 수 있다. 사용자 지정 속성도
포함된다.
SMS-기반 MFA
사인업, 패스워드 분실/리셋에서 에서 별도로 MFA를 사용하게 할 수 있다.
23. 유저 시나리오
토큰 기반 인증
안전한 원격 패스워드
프로토콜
SMS 기반 Multi-
factor 인증
Cognito 사인인은 dentity provider로서 OpenID Connect (OIDC) 와 OAuth
2.0를 지원한다
Cognito 사인인은 Secure Remote Password (SRP)를 안전한 패스워드 처리를
위해서 사용한다
모바일 폰의 텍스트 메시징을 이용해서 보안 레이어를 더 추가할 수 있다.
26. Lambda 훅을 통한 커스터마이징
Lambda Hook 사용예
Pre user sign-up 사인업 요청에 대한 억셉/거부를 할 수 있는 커스텀 확인
Custom message 확인 메시지에 대한 로컬라이제이센 등 진보된 커스터밍
Post confirmation 유저가 컨펌된 이후에, 커스텀 메시지나 분석을 위한 로직 추가
Pre authentication
유저가 인증을 요청하면 호룿되어서 사인인 요청에 대한 억셉/거부를 할 수
있는 커스텀 확인
Post authentication 커스텀 분석을 위한 이벤트 로깅
Define Auth Challenge 이 트리거는 사용자 지정 인증 흐름을 시작하기 위해 호출됨.
Create Auth Challenge 이 트리거는 '챌린지 정의’ 트리거의 일부로 사용자 지정 챌린지가
지정되어있는 경우 'Define Auth Challenge'이후에 호출됨
Verify Auth Challenge
Response
이 트리거는 최종 사용자의 사용자 지정 인증 시도에 대한 응답이 유효한지
여부를 확인하기 위해 호출됨
27.
28. 확장된 관리 기능
커스텀 속성 정의
속성에 대한 필수 사항
설정
User Pools 생성 및
관리
사용자 프로필에 사용할 커스텀 속성을 정의할 수 있다
사인업에 앞서 완전하게 제공되어야할 속성을 선택할 수 있다
AWS region별로 복수개의 유저 풀을 생성, 설정과 삭제를 할 수 있다
패스워드 정책 설정 패스워트 정책(길이 등)을 설정하여서 관리할 수 있다
유저 검색 콘솔 혹은 API를 통해 이메일, 전화번호, 유저 이름 등으로 유저를 검색할 수
있다.
유저 관리 유저 패스워드 리셋, 활성화, 유저 컨펌, MFA 사용, 유저 삭제, 글로벌 사인아웃
등 유저 관리 기능을 수행한다.
29. Cognito User Pools 과 API 게이트웨이
1. Custom Authorizer 기능
당신의 API에 대한 접근을 제어하기
위해 Oauth나 SAML과 같은
토큰인증기능을 사용할 수 있다.
2. Native Support
User Pools는 API 게이트웨이와 함께
API 요청을 인가해준다. API
게이트웨이가 ID 토큰을 받아서
유저풀에 기반한 유저에 대한 인가를
할 수 있게 설정할 수 있다
30. 유저 상태의 이해
새로운 유저는 “Registered”
상태로 시작
유저는 컨펌이 나야, 비로서
사인-인이 가능
사용자는 삭제전에 반드시
“disable”로 되어야만 삭제가
가능
Registered
(cannot sign in)
Sign-up
Confirmed
Disabled
Verify email Verify phone
or
Disable
Delete
(deleted)
Lambda Trigger:
Pre Sign-up
31. 이메일과 폰의 인증번호전송
사용자 풀은 전자 메일 주소 및 전화 번호에 대한 기본
확인 기능을 제공합니다.
6 자리 코드가 전자 메일 메시지 또는 SMS 텍스트로
전송되고 VerifyUserAttribute API를 통해 제출됩니다.
가입시 전화 번호와 이메일 주소가 모두 제공되면 인증
코드는 전화로만 전송됩니다.
앱에서 GetUser를 호출하여 이메일 주소 또는 전화
번호가 확인 대기 중인지 확인한 다음
GetUserAttributeVerificationCode를 호출하여 인증을
시작할 수 있습니다.
Your verification
code is 938764
32. Amazon Cognito 사용자 풀에서 별명 사용하기
이메일을 사용한 가입 및 로그인은 오늘날 매우
일반적입니다.
Amazon Cognito의 별칭은 사용자 이름 대신 전자
메일, 전화 또는 기본 설정 사용자 이름 사용을
지원합니다.
로그인시 사용자 이름 값을 제공해야하지만 앱에서
생성 할 수 있으며 최종 사용자에게는 노출되지 않을
수 있습니다.
전화 번호 및 이메일 주소는 고유해야하며
로그인해야만 전화 번호를 확인할 수 있습니다.
My App
Email
Password
Sign In
Sign Up
34. API Gateway 사용의 장점
API 응답을 저장하기 위한 관리형 캐시
CloudFront를 통한 응답속도 개선 및 DDoS 보호
iOS, Android 및 JavaScript 를 위한 SDK 생성
API 정의를 위한 Swagger 지원
Request/response 데이터 변환
35. API 호출 흐름
Internet
Mobile apps
Websites
Services
AWS Lambda
functions
AWS
API Gateway
cache
Endpoints on
Amazon
EC2/AWS
Elastic
Beanstalk
Any other publicly
accessible endpoint
Amazon
CloudWatch
monitoring
API
Gateway
36. 관리형 서비스
새로운, 완전 관리형 모델
InternetMobile apps
AWS Lambda
functions
AWS
API Gateway
cache
Endpoints on
Amazon EC2
Any other publicly
accessible endpoint
Amazon
CloudWatch
Amazon
CloudFront
API
Gateway
API Gateway
Other AWS
services
AWS Lambda
functions
37. 빌드, 배포, 복제 및 롤백
리소스, 메서드 및 설정으로 API 빌드
API를 스테이지 별로 배포
• 사용자는 필요한 만큼 각각의 제한(Throttling), 캐싱, 미터링 및 로그
구성을 가지는 스테이지를 생성 가능
신규 API 생성을 위하여 기존 API 복제
• 사용자는 API의 다양한 버전을 계속 운용 가능
기존 배포로 롤백
• 사용자 배포의 히스토리를 보관하여 기존 배포로 롤백 가능
38. API 구성(Configuration)
1. API 생성
2. API 내 리소스(Resource) 정의
3. 리소스 내 메서드(Method) 정의
• 메서드 = 리소스 + HTTP 구문
Pet Store
/pets
/pets/{petId}
• GET
• POST
• PUT
39. API 배포
API 구성은 스테이지(Stage)로 배포
스테이지는 다양한 환경. 예 :
• Dev (예: example.com/dev)
• Beta (예: example.com/beta)
• Prod (예: example.com/prod)
• 사용자에 필요한 만큼 생성
Pet Store
dev
beta
gamma
prod
40. API의 다양한 버전 및 스테이지 관리
API 1 (v1)
스테이지(dev)
스테이지(prod)
API 2 (v2)
스테이지(dev)
41. 커스텀 도메인 이름
커스텀 도메인 이름(Custom Domain Name) 구성 지원
API Gateway에 서명된 HTTPS 인증서 제공
커스텀 도메인 이름은 API 또는 스테이지를 지정 가능
예제 :
• Beta (예: yourapi.com/beta)
• Prod (예: yourapi.com/prod)
277. https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에
참여하시면, 행사 후 기념품을 드립니다.
#AWSSummit 해시태그로 소셜 미디어에 여러분의
행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 곧 공유될 예정입니다.
여러분의 피드백을 기다립니다!