서버리스 - Step Functions / Cognito

이기태·2024년 5월 25일
0

AWS

목록 보기
39/62

AWS Step Functions

Step Functions는 서버리스 워크플로를 시각적으로 구성할 수 있는 기능이다.
주로 람다 함수를 오케스트레이션 하는데 활용

-> 그래프를 만드는데 각 그래프 단계별로 해당 단계의 결과에 따라 다음으로 수행하는 작업이 무엇인지 정의
-> 복잡한 워크플로를 만들어 AWs에서 실행시킬 수 있는 편리한 도구

  • Step Functions 기능
    • 시퀸싱
    • 병행 실행
    • 조건 설정
    • 타임 아웃
    • 에러 처리
  • 람다 함수 뿐 아니라 EC2,ECS,온프레미스 서버, API Gateway, SQS 큐,등등 다양한 서비스를 워크플로에 넣을 수 있다.
  • 워크플로에 사람이 개입해서 승인을 해야지만 진행되는 단계를 설정할 수 있다.
    ex) 어떤 단계에 이르면 사람이 결과를 확인하고 다음 단계넘어가거나 멈추게 한다.
  • 사용 사례
    - 주문 이행
    - 데이터 처리
    - 웹 애플리케이션 구성하기
    - 복잡한 워크플로를 시각적으로 구성 할 때 사용

Cognito

Cognito는 사용자에게 웹 및 모바일 앱과 상호 작용할 수 있는 자격 증명을 부여
일반적으로 사용자들은 AWS 계정 외부에 있다.
-> 즉, 모르는 사용자에게 자격증명을 부여해 사용자를 인식

  • Cognito의 하위 서비스(2 종류)
    • Cognito 사용자 풀
      앱 사용자에게 가입 기능을 제공
      API Gateway 및 애플리케이션 로드 밸런서와 원활히 통합된다.
    • Cognito 자격 증명 풀
      앱에 등록된 사용자에게 임시 AWS 자격 증명을 제공
      일부 AWS 리소스에 직접 액세스할 수 있게 해줌.
      Cognito 사용자 풀과 원활히 통합된다.
  • Cognito와 IAM의 차이
    Cognito는 AWS 외부의 웹/모바일 앱 사용자를 대상으로 한다.
    키워드: 수 백 명의 사용자, 모바일 사용자, SAML을 통한 인증 -> Cognito

Cognito 사용자 풀

웹 및 모바일 앱을 대상으로 하는 서버리스 사용자 DB

  • 간단한 로그인 절차 정의
    사용자 이름(이메일), 비밀번호의 조합
  • 비밀번호 재설정 기능
  • 이메일 및 전화번호 검증 및 사용자 멀티팩터 인증(MFA) 가능
  • 페이스북, 구글과 통합할 수 있어 소셜 로그인 가능

  • API Gateway나 애플리케이션 로드 밸런서와 통합가능.
    사용자 로그인을 한 곳에서 확실하게 검증
    검증 책임을 백엔드에서 API Gateway나 ALB로 옮긴 것.

    (왼쪽)
    - 사용자는 Cognito 사용자 풀에 접속해 토큰을 받는다.
    - 검증을 위해 토큰을 API Gateway에 전달한다.
    - 확인이 끝나면 사용자 자격 증명으로 변환되 백엔드의 람다 함수로 전달 된다.
    - 람다 함수는 처리할 사용자가 인증된 사용자인걸 인식하게 된다.
    (오른쪽)
    - Cognito 사용자 풀을 애플리케이션 로드 밸런서 위에 배치해 인증
    - 애플리케이션이 Cognito 사용자 풀에 연결한 다음
    - ALB에 전달해 유효한 로그인인지 확인
    - 유효하면 요청을 백엔드로 리다이렉트하고 사용자의 자격증명과 함께 추가 헤더를 전송

Cognito 자격 증명 풀

사용자에게 자격 증명을 제공하지만 API Gateway나 ALB를 통해 액세스하지 않고 임시 AWS 자격 증명으로 AWS 계정에 직접 액세스 하는 것.
-> 사용자는 Cognito 사용자 풀 내의 사용자가 될 수도 있고
-> 타사 로그인이 될 수도 있다.
-> 직접 또는 API Gateway를 통해 서비스에 액세스할 수 있다.

  • Cognito 사용자 풀과 API Gateway/ALB를 통합 가능.
  • 자격 증명에 적용 되는 IAM 정책은 Cognito 자격 증명 풀 서비스에 사전에 정의 되어있다.
  • user_id를 기반으로 사용자 정의해 세분화된 제어를 할 수 있다.
    기본 IAM 역할을 정의할 수도 있다.
    게스트 사용자나 특정 역할이 정의되지 않은 인증된 사용자는 기본 IAM 역할을 상속하게 된다.
  • Cognito 자격 증명 풀 - 다이어그램

    - 웹 및 모바일에서 S3나 DynamoDB에 직접 액세스하고 싶을 때
    - Cognito 자격 증명 풀을 사용
    - 웹, 모바일 앱이 로그인해서 토큰을 받는다.
    Cognito 사용자 풀에 대한 로그인이거나
    소셜 자격 증명 제공자나
    SAML OpenID Connect 중 하나.
    - 이 토큰을 Cognito 자격 증명 풀 서비스에 전달해 토큰을 임시 AWS 자격 증명과 교환한다.
    - 이를 위해 Cognito 자격 증명 풀은 전달 받은 토큰일 올바른지 평가한다.
    - 그리고 해당 사용자에게 적용되는 IAM 정책을 생성
    - 관련 IAM 정책이 적용된 임시 자격증명으로 S3나 DynamoDB에 직접 접근 가능.
  • Cognito 자격 증명 풀 DynamoDB의 행 수준 보안

    (위 그림 예시 설명)
    - DynamoDB의 LeadingKeys가 Cognito 자격 증명 사용자 ID와 같아야 한다는 조건이다.
    - 그럼 이 정책이 적용된 사용자는 DB 테이블의 모든 항목을 읽고 쓸 수 있지 않다.
    - 위 조건을 통해 액세스를 얻은 항목만 접근이 가능하다.

0개의 댓글

관련 채용 정보