[AWS] IoT Core의 인증 방식

Joney의 SW 공부 블로그·2023년 5월 17일
0

AWS IoT Core

목록 보기
2/7

IoT Core의 인증

  • 각 디바이스는 AWS IoT와 상호 작용을 하기 위한 자격 증명이 필요
  • AWS 클라우드 보안 메커니즘이 AWS IoT 및 기타 AWS 서비스 간의 데이터 이동을 보호

서버 인증

  • 디바이스가 IoT Core에 연결하려고 시도하면, IoT Core 서버는 디바이스가 서버를 인증하는데 사용할 수 있는 인증서를 전송
  • 인증은 TLS 계층에서 체인 검증으로 통해 실시

클라이언트 인증

  • 클라이언트 인증에는 3가지 방법이 존재
    • X.509를 사용한 인증 (거의 기본값으로 사용)
    • 서명 버전4
    • 사용자 지정 인증
  • 이 글에서는 X.509를 사용한 인증에 대해서 다루고 나머지 방법에 대해서는 개념만 정리

X.509를 사용한 인증

  • AWS IoT Core는 TLS 프로토콜의 클라이언트 인증 모드를 사용하여 클라이언트 인증서를 인증
  • TLS 클라이언트 인증에서 AWS IoT Core는 디바이스에 X.509 클라이언트 인증서를 요청하고 인증서의 레지스트리와 비교하여 인증서의 상태 및 AWS 계정을 검증
  • 인증서에 포함된 퍼블릭 키에 해당하는 프라이빗 키의 소유권을 증명
  • Amazon Root CA를 사용하는 클라이언트 인증서를 생성하고 다른 CA에서 서명한 자체 클라이언트 인증서를 사용 가능 (자체 클라이언트 인증서 생성)

AWS의 인증서 생성

  1. AWS 콘솔 (혹은 CLI)에서 인증서를 생성을 실행하면 Public key와 Private key 한 쌍을 만듦
  2. Public key를 포함한 CSR(Certificate Signing Request)를 생성
  • CSR은 인증서 발급을 위해 필요한 정보를 담고 있는 신청 형식 데이터
  • Public key와 인증서가 적용되는 도메인의 정보를 담고 있음 (Private key를 담고 있는 경우도 있음)
  1. AWS Root CA의 Private key로 생성한 CSR에 디지털 사인을 하고 디바이스 certificate 생성 완료
  2. 디바이스에 1.에서 생성한 Private key와 2.~3.에서 생성한 certificate와 Root CA를 제공

X.509 인증서를 사용할 경우 디바이스-서버 HandShake

  • 기본적으로 TLS에 따름
  • IoT Core와 소통하기 위해서는 certificate와 private key, RootCA가 필요
  • 대략적인 인증 절차는 다음과 같은 sequence로 진행

서명 버전4를 사용한 인증

  • AWS의 IAM에서 생성한 access key와 secret key를 사용한 인증 방법
  • 사용할 IAM계정에 IoT Core관련한 권한을 부여한 후 사용 가능
  • 임시 자격 증명을 사용한 인증도 가능

임시 자격 증명

  • 임시 자격 증명 이란
    • 단기로 사용할 수 있는 자격 증명
    • 유효기간은 몇 분에서 몇 시간(5분에서 36시간)
    • 동적으로 생성되어 요청한 사용자에게 제공
  • 임시 자격 증명을 받기 위한 프로세스
    • 아무 권한이 없는 IAM 유저를 생성
    • 해당 사용자는 자격 증명을 요청할 수 있는 권한 부여 (IAM의 AssumeRole)
    • IAM역할 생성 (IoT Core 관련한 권한 정책 생성)
    • 임시 자격 증명 발급 (IAM 유저의 access key, secret key 필요)
      • aws sts assume-role –role-arn {생성한 IAM 역할의 arn} --role-session-name {적당한 세션 이를}
    • 발급 받은 임시 자격 증명으로 등록 (기존의 access key, secret key 대신 사용)

사용자 지정 인증

  • AWS IoT Core에서 기본으로 제공하는 인증 방법이 아닌 방법으로 인증할 때 사용
    • 필드의 기존 디바이스를 AWS IoT Core에 마이그레이션 하려고 하는 경우 새 자격 증명을 프로비저닝 할 필요없이 마이그레이션 가능

사용자 인증 워크플로

  1. 디바이스 통신 프로토콜 중 하나를 사용하여 AWS IoT Core 데이터 엔드포인트에 연결
  2. AWS IoT Core는 다음 두 조건 중 하나를 확인
  • 수신되는 요청의 권한 부여자
  • 엔드포인트에 구성된 기본 권한 부여자
  1. 권한 부여자를 찾으면 AWS IoT Core가 권한 부여자와 연결된 Lambda 함수를 트리거
  2. (선택 사항) 토큰 서명을 활성화 한 경우, Lambda 함수를 트리거하기 전에 권한 부여자에 저장된 공개 키를 사용하여 요청 서명의 유효성을 검사
  3. lambda 함수는 요청에서 자격 증명 및 연결 메타데이터를 수신하고 인증 여부를 결정
profile
SW 지식 노트 블로그

0개의 댓글