Lambda 권한 부여자를 사용한 사용자 지정 토큰 확인 - AWS HealthImaging

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Lambda 권한 부여자를 사용한 사용자 지정 토큰 확인

HealthImaging은 Lambda 권한 부여자를 사용하는 아키텍처를 통해 OIDC 지원을 구현하므로 고객은 자체 토큰 확인 로직을 구현할 수 있습니다. 이 설계를 통해 토큰을 검증하고 액세스 결정을 적용하는 방법을 유연하게 제어할 수 있으며, OIDC 호환 ID 제공업체(IdPs.

인증 흐름

인증이 높은 수준에서 작동하는 방식은 다음과 같습니다.

  1. 클라이언트가 DICOMweb API를 호출: 애플리케이션이 선택한 OIDC 자격 증명 공급자로 인증하고 서명된 ID 토큰(JWT)을 수신합니다. 각 DICOMweb HTTP 요청에 대해 클라이언트는 권한 부여 헤더에 OIDC 액세스 토큰(일반적으로 보유자 토큰)을 포함해야 합니다. 요청이 데이터에 도달하기 전에 HealthImaging은 수신 요청에서이 토큰을 추출하고 구성한 Lambda 권한 부여자를 호출합니다.

    1. 헤더는 일반적으로 형식을 따릅니다Authorization: Bearer <token>.

  2. 초기 확인: HealthImaging은 Lambda 함수를 불필요하게 호출하지 않고 명백히 유효하지 않거나 만료된 토큰을 빠르게 거부하기 위해 액세스 토큰 클레임을 확인합니다. HealthImaging은 Lambda 권한 부여자를 호출하기 전에 액세스 토큰의 특정 표준 클레임에 대한 초기 확인을 수행합니다.

    1. iat (발급 시점): HealthImaging은 토큰의 발급 시간이 허용 한도 내에 있는지 확인합니다.

    2. exp (만료 시간): HealthImaging은 토큰이 만료되지 않았는지 확인합니다.

    3. nbf (이전 시간이 아님): 존재하는 경우 HealthImaging은 유효한 시작 시간 전에 토큰이 사용되지 않도록 합니다.

  3. HealthImaging은 Lambda 권한 부여자를 호출합니다. 초기 클레임 확인이 통과되면 HealthImaging은 고객이 구성한 Lambda 권한 부여자 함수에 추가 토큰 확인을 위임합니다. HealthImaging은 추출된 토큰 및 기타 관련 요청 정보를 Lambda 함수에 전달합니다. Lambda 함수는 토큰의 서명과 클레임을 확인합니다.

  4. 자격 증명 공급자로 확인: Lambda에는 ID 토큰 서명을 확인하고, 더 광범위한 토큰 확인(예: 발급자, 대상, 사용자 지정 클레임)을 수행하고, 필요한 경우 IdP에 대해 해당 클레임을 검증하는 사용자 지정 코드가 포함되어 있습니다.

  5. 권한 부여자가 액세스 정책을 반환합니다. 확인에 성공하면 Lambda 함수가 인증된 사용에 적합한 권한을 결정합니다. 그런 다음 Lambda 권한 부여자는 부여할 권한 집합을 나타내는 IAM 역할의 Amazon 리소스 이름(ARN)을 반환합니다.

  6. 요청 실행: 수임된 IAM 역할에 필요한 권한이 있는 경우 HealthImaging은 요청된 DICOMWeb 리소스를 반환합니다. 권한이 충분하지 않으면 HealthImaging은 요청을 거부하고 적절한 오류 응답 오류(예: 403 금지됨)를 반환합니다.

참고

AWS HealthImaging 서비스에서 관리하지 않는 권한 부여자 Lambda 함수입니다. AWS 계정에서 실행됩니다. 고객에게는 함수 호출 및 실행 시간에 대한 요금이 HealthImaging 요금과 별도로 청구됩니다.

아키텍처 개요

워크플로를 보여주는 다이어그램: 클라이언트에서 토큰 전송, Lambda 권한 부여자 검증, HealthImaging 프로세스 요청

Lambda 권한 부여자를 사용한 OIDC 인증 워크플로

사전 조건

액세스 토큰 요구 사항

HealthImaging에서는 액세스 토큰이 JSON 웹 토큰(JWT) 형식이어야 합니다. 많은 ID 제공업체(IDPs)는 기본적으로이 토큰 형식을 제공하는 반면 액세스 토큰 양식을 선택하거나 구성할 수 있는 ID 제공업체도 있습니다. 통합을 진행하기 전에 선택한 IDP가 JWT 토큰을 발급할 수 있는지 확인합니다.

토큰 형식

액세스 토큰은 JWT(JSON 웹 토큰) 형식이어야 합니다.

필수 클레임
exp (만료 시간)

토큰이 무효화되는 시기를 지정하는 필수 클레임입니다.

  • UTC의 현재 시간 이후여야 합니다.

  • 토큰이 무효화될 때를 나타냅니다.

iat (에서 발행됨)

토큰이 발급된 시기를 지정하는 필수 클레임입니다.

  • UTC의 현재 시간 이전이어야 합니다.

  • UTC의 현재 시간보다 12시간 이전이어서는 안 됩니다.

  • 이렇게 하면 최대 토큰 수명이 12시간으로 효과적으로 적용됩니다.

nbf (시간 이전이 아님)

토큰을 사용할 수 있는 가장 빠른 시간을 지정하는 선택적 클레임입니다.

  • 있는 경우 HealthImaging에서 평가됩니다.

  • 토큰을 수락하지 않아야 하는 시간을 지정합니다.

Lambda 권한 부여자 응답 시간 요구 사항

HealthImaging은 최적의 API 성능을 보장하기 위해 Lambda 권한 부여자 응답에 대해 엄격한 타이밍 요구 사항을 적용합니다. Lambda 함수는 1초 이내에를 반환해야 합니다.

모범 사례

토큰 확인 최적화

  • 가능한 경우 JWKS(JSON 웹 키 세트) 캐시

  • 가능한 경우 유효한 액세스 토큰 캐시

  • 자격 증명 공급자에 대한 네트워크 호출 최소화

  • 효율적인 토큰 검증 로직 구현

Lambda 구성

  • Python 및 Node.js 기반 함수는 일반적으로 더 빠르게 초기화됩니다.

  • 로드할 외부 라이브러리의 양 줄이기

  • 일관된 성능을 보장하기 위해 적절한 메모리 할당 구성

  • CloudWatch 지표를 사용하여 실행 시간 모니터링

OIDC 인증 활성화

  • OIDC 인증은 데이터 스토어를 생성할 때 활성화할 수 있습니다.

  • 기존 데이터 스토어에 대한 OIDC 활성화는 API를 통해 지원되지 않습니다.

  • 기존 데이터 스토어에서 OIDC를 활성화하려면 고객이 AWS Support에 문의해야 합니다.