전 세계적으로 많은 조직이 다양한 컨텐츠 저장소에 중요한 비즈니스 데이터를 분산시켜 이 정보에 효율적이고 응집력 있는 방식으로 액세스하기 어렵습니다. 각 리포지토리에는 광범위한 문서 형식과 액세스 제어 메커니즘이 포함되어 있기 때문에 통합되고 안전한 검색 환경을 만드는 것은 조직에게 중요한 과제입니다.
아마존 켄드라 는 사용자가 다양한 컨텐츠 저장소에서 검색할 수 있는 지능형 엔터프라이즈 검색 서비스입니다. 고객은 사용자가 검색 애플리케이션에 액세스할 수 있도록 인증하고 권한을 부여할 책임이 있으며, Amazon Kendra는 엔터프라이즈 애플리케이션에 대한 보안 검색을 지원하여 사용자의 검색 쿼리 결과에 사용자가 읽을 수 있는 문서만 포함되도록 합니다. Amazon Kendra는 보안 검색 토큰을 추가하여 검색을 수행하는 사용자 그룹뿐만 아니라 개별 사용자의 신원을 쉽게 검증할 수 있습니다. 보안 검색을 위해 사용자 토큰을 추가하면 Amazon Kendra에서 액세스 기반 필터링 검색을 간소화하고 안전하게 수행할 수 있습니다. 이를 위해 속성 필터를 사용하는 대신 쿼리 페이로드에서 사용자 액세스 정보를 안전하게 전달할 수 있습니다. 이 기능을 통해 Amazon Kendra는 정확하고 안전한 액세스 기반 필터링을 위해 토큰 정보를 검증하고 검색 결과에 자동으로 적용할 수 있습니다.
Amazon Kendra는 다음 토큰 유형을 사용하여 토큰 기반 사용자 액세스 제어를 지원합니다.
- 아이디 열기
- 공유 비밀이 있는 JWT
- 공개 키가 있는 JWT
- JSON
이전에 우리는 Open ID를 사용하는 Amazon Kendra의 토큰 기반 사용자 액세스 제어. 이 게시물에서는 공유 암호가 있는 JWT를 사용하여 Amazon Kendra에서 토큰 기반 사용자 액세스 제어를 시연합니다. JWT(JSON Web Token)는 클라이언트와 서버 간에 보안 정보를 공유하는 데 사용되는 개방형 표준입니다. 클레임 집합을 포함하여 인코딩된 JSON 개체를 포함합니다. JWT는 토큰이 발급된 후 클레임을 변경할 수 없도록 암호화 알고리즘을 사용하여 서명됩니다. JWT는 권한 부여 및 정보 교환과 관련된 시나리오에서 유용합니다.
JWT는 점(.)으로 구분된 세 부분으로 구성됩니다.
- 헤더 – 토큰 유형(JWT), 사용 중인 서명 알고리즘(예: HMAC SHA256 또는 RSA) 및 선택적 키 식별자와 같은 부분을 포함합니다.
- Payload – 여기에는 다음과 같은 여러 키-값 쌍이 포함됩니다. 주장, ID 공급자가 발급합니다. 토큰의 발급 및 만료와 관련된 여러 클레임 외에도 토큰에는 개별 보안 주체 및 테넌트에 대한 정보도 포함될 수 있습니다.
- 서명 – 서명 부분을 생성하려면 인코딩된 헤더, 인코딩된 페이로드, 비밀, 헤더에 지정된 알고리즘을 가져와서 서명합니다.
따라서 JWT는 다음과 같습니다.
다음은 샘플 헤더입니다.
다음은 샘플 페이로드입니다.
JWT는 비밀 키로 생성되며 해당 비밀 키는 비공개입니다. 즉, 공개하거나 JWT 내부에 주입하지 않습니다. 클라이언트로부터 JWT를 수신하면 서버에 저장된 비밀 키로 JWT를 확인할 수 있습니다. JWT를 수정하면 확인(JWT 유효성 검사)이 실패합니다.
이 게시물은 공유 액세스 키를 사용하는 JWT의 샘플 사용과 액세스 제어로 Amazon Kendra 인덱스를 보호하기 위한 사용법을 보여줍니다. 프로덕션 환경에서는 원하는 보안 인증 서비스 공급자를 사용하고 요구 사항에 따라 JWT를 생성합니다.
JWT에 대한 자세한 내용은 다음을 참조하세요. JSON 웹 토큰 소개.
솔루션 개요
받는 유사 게시 Open ID를 사용하는 이 솔루션은 일련의 사용자 및 그룹이 문서 저장소에 검색 쿼리를 수행하도록 설계되었으며 해당 그룹 내에서 액세스가 승인된 문서에서만 결과가 반환됩니다. 다음 표에는 사용 사례에 대해 각 사용자가 액세스할 수 있는 문서가 요약되어 있습니다. 이 예에서 사용되는 문서는 AWS 공개 문서의 하위 집합입니다.
사용자 | 그룹 | 액세스 권한이있는 문서 유형 |
손님 | . | 블로그 |
패트리샤 | 빠른 | 블로그, 사용자 가이드 |
James | 세일즈 | 블로그, 사용자 가이드, 사례 연구 |
요한 복음 | 마케팅 | 블로그, 사용자 가이드, 사례 연구, 분석 보고서 |
메리 | 솔루션 아키텍트 | 블로그, 사용자 가이드, 사례 연구, 분석 보고서, 백서 |
다음 다이어그램은 Amazon Kendra 인덱스의 특정 문서에 대한 사용자 액세스를 제어하기 위해 공유 액세스 키가 있는 JWT 생성을 보여줍니다.
Amazon Kendra 인덱스가 사용자 액세스 토큰이 있는 쿼리 API 호출을 수신하면 공유 비밀 키를 사용하여 토큰을 검증합니다(안전하게 저장된 AWS 비밀 관리자) 페이로드에서 사용자 이름 및 그룹과 같은 매개변수를 가져옵니다. Amazon Kendra 인덱스는 저장된 ACL(액세스 제어 목록)과 사용자의 JWT에서 받은 정보를 기반으로 검색 결과를 필터링합니다. 이러한 필터링된 결과는 애플리케이션에서 만든 쿼리 API 호출에 대한 응답으로 반환됩니다.
사전 조건
이 게시물의 단계를 따르려면 다음이 있는지 확인하십시오.
공유 비밀 키로 JWT 생성
다음 샘플 Java 코드는 오픈 소스를 사용하여 공유 비밀 키로 JWT를 생성하는 방법을 보여줍니다. jsonwebtoken 패키지. 프로덕션 환경에서는 JWT 생성 요구 사항에 따라 선택한 보안 인증 서비스 공급자를 사용하게 됩니다.
사용자 이름과 그룹 정보를 페이로드의 클레임으로 전달하고, 공유 암호로 JWT에 서명하고, 해당 사용자에 대한 JWT를 생성합니다. 256비트 문자열을 비밀로 제공하고 이후 단계에서 사용할 base64 URL 인코딩 공유 비밀의 값을 유지합니다.
JWT 공유 암호로 Amazon Kendra 인덱스 생성
Amazon Kendra 인덱스 생성에 대한 지침은 다음을 참조하십시오. 인덱스 생성. 메모해두세요 AWS 자격 증명 및 액세스 관리 (IAM) 프로세스 중에 생성한 역할입니다. 다음에 따라 S3 버킷 및 Secrets Manager에 대한 역할 액세스를 제공합니다. 최소 권한 원칙. 예제 정책은 다음을 참조하십시오. IAM 자격 증명 기반 정책의 예. 인덱스를 생성한 후 Amazon Kendra 콘솔은 다음 스크린샷과 같아야 합니다.
비밀을 추가하려면 다음 단계를 완료하십시오.
- Amazon Kendra 콘솔에서 다음으로 이동합니다. 사용자 액세스 제어 인덱스 세부 정보 페이지에서 탭을 누릅니다.
- 왼쪽 메뉴에서 설정 편집.
- 토큰 기반 액세스 제어를 구현하고 있으므로 선택 가능 아래에 액세스 제어 설정.
- $XNUMX Million 미만 토큰 구성선택한다. 공유 비밀이 있는 JWT for 토큰 유형.
- 럭셔리 비밀 유형선택한다. 신제품.
- 럭셔리 비밀 이름, 입력
AmazonKendra-jwt-shared-secret
또는 원하는 이름. - 럭셔리 키 ID, 샘플 Java 코드에서 만든 JWT와 일치하는 키 ID를 입력합니다.
- 럭셔리 암호알고리즘, HS256 알고리즘을 선택합니다.
- 럭셔리 공유 비밀, 이전에 Java 코드에서 생성된 유지된 base64 URL 인코딩 비밀을 입력하십시오.
- 왼쪽 메뉴에서 비밀 저장.
비밀은 이제 JSON 웹 키 세트(JWKS)로 Secrets Manager에 저장됩니다. Secrets Manager 콘솔에서 찾을 수 있습니다. 자세한 내용은 다음을 참조하십시오. 공유 암호와 함께 JWT(JSON 웹 토큰) 사용.
- 확장 고급 구성 안내
이 단계에서는 서명이 유효할 때 JWT 클레임에서 추출하고 ACL과 일치시킬 사용자 이름 및 그룹을 설정합니다.
- 럭셔리 ID / Username¸ 사용자 이름을 입력합니다.
- 럭셔리 그룹, 그룹을 입력합니다.
- 선택적 필드는 기본값으로 둡니다.
- 왼쪽 메뉴에서 다음 보기다음을 선택 업데이트.
S3 버킷을 데이터 소스로 준비
S3 버킷을 데이터 원본으로 준비하려면 S3 버킷을 생성합니다. 터미널에서 AWS 명령 줄 인터페이스 (AWS CLI) 또는 AWS 클라우드쉘, 다음 명령을 실행하여 문서 및 메타데이터를 데이터 원본 버킷에 업로드합니다.
쿼리되는 문서는 S3 버킷에 저장됩니다. 각 문서 유형에는 블로그, 사례 연구, 분석가 보고서, 사용자 가이드 및 백서와 같은 별도의 폴더가 있습니다. 이 폴더 구조는 Data라는 폴더에 포함되어 있습니다. ACL을 포함한 메타데이터 파일은 Meta라는 폴더에 있습니다.
Amazon Kendra S3 커넥터를 사용하여 이 S3 버킷을 데이터 원본으로 구성합니다. 데이터 원본이 Amazon Kendra 인덱스와 동기화되면 모든 문서를 크롤링 및 인덱싱하고 메타데이터 파일에서 ACL 및 문서 속성을 수집합니다. 메타데이터 파일을 사용하는 ACL에 대한 자세한 내용은 다음을 참조하십시오. Amazon S3 문서 메타데이터. 이 예에서는 맞춤 속성을 사용합니다. DocumentType
문서의 유형을 나타냅니다. 업로드 후 S3 버킷 구조는 다음 스크린샷과 같아야 합니다.
사용자 정의 속성을 설정하려면 DocumentType
다음 단계를 완료하십시오.
- Kendra 지수를 선택하고 패싯 정의 탐색 창에서
- 왼쪽 메뉴에서 필드 추가.
- 럭셔리 분야 명, 입력
DocumentType
. - 럭셔리 데이터 유형선택한다. 끈.
- 왼쪽 메뉴에서 추가.
이제 S3 커넥터를 사용하여 생성한 버킷에서 Amazon Kendra 인덱스로 문서를 수집할 수 있습니다. 전체 지침은 다음을 참조하십시오. Amazon Kendra S3 커넥터를 통해 문서 수집.
- . 동기화 설정 구성 섹션 데이터 소스 위치를 입력하십시오, S3 버킷(
s3://kendra-demo-bucket/
). - 럭셔리 메타 데이터 파일 접두사 폴더 위치, 입력
Meta/
. - 펼치기 추가 구성.
- 에 패턴 포함 탭, 접두사, 입력
Data/
.
지원되는 커넥터에 대한 자세한 내용은 다음을 참조하세요. 커넥터.
- 왼쪽 메뉴에서 다음 보기다음, 다음 보기 다시 업데이트.
- 데이터 소스가 생성될 때까지 기다린 다음 데이터 소스를 선택하고 지금 동기화.
데이터 소스 동기화를 완료하는 데 10~15분이 소요될 수 있습니다. 동기화가 완료되면 마지막 동기화 상태 다음과 같이 표시해야 합니다. 성공한.
Amazon Kendra 인덱스 쿼리
색인에서 테스트 쿼리를 실행하려면 다음 단계를 완료하세요.
- Amazon Kendra 콘솔에서 인덱싱된 콘텐츠 검색 탐색 창에서
- 펼치기 액세스 토큰으로 쿼리 테스트.
- 왼쪽 메뉴에서 토큰 적용.
- 사용자 및 그룹에 대한 JWT를 생성할 수 있습니다. 이 예에서는 다음에 대한 JWT를 생성합니다.
AWS-SA
그룹. 사용자 이름을 Mary로, 그룹을 다음으로 바꿉니다.AWS-SA
JWT 생성 단계에서. - 생성된 토큰을 입력하고 선택 신청.
ACL을 기반으로 블로그, 사용자 가이드, 사례 연구, 분석가 보고서, 백서 등 모든 폴더의 결과여야 합니다.
마찬가지로 다음에서 James로 로그인하면 AWS-Sales
그룹화하고 해당 JWT를 통과하면 블로그, 사용자 가이드 및 사례 연구에만 액세스할 수 있습니다.
토큰을 전달하지 않고 게스트로 인덱스를 검색할 수도 있습니다. 게스트는 블로그 폴더의 콘텐츠에만 액세스할 수 있습니다.
다른 사용자 및 그룹으로 로그인한 동안 생각할 수 있는 다른 쿼리를 사용하여 실험하고 결과를 관찰합니다.
정리
향후 비용 발생을 방지하려면 이 솔루션의 일부로 생성한 리소스를 정리하십시오. 솔루션 테스트 중 생성된 Amazon Kendra 인덱스 및 S3 버킷을 삭제하려면 다음을 참조하십시오. 대청소. Secrets Manager 암호를 삭제하려면 다음을 참조하십시오. AWS Secrets Manager 비밀 삭제.
결론
이 게시물에서는 Amazon Kendra가 사용자 액세스를 기반으로 검색 결과만 반환하는 보안 검색을 수행하는 방법을 살펴보았습니다. 공유 비밀 키가 있는 JWT를 추가하면 검색을 수행하는 사용자 그룹뿐만 아니라 개별 사용자의 신원을 쉽게 확인할 수 있습니다. 이 유사한 접근 방식은 다음으로 확장될 수 있습니다. 공개 키가 있는 JWT. 자세한 내용은 다음을 참조하십시오. 공유 암호와 함께 JWT(JSON 웹 토큰) 사용.
저자에 관하여
니틴 유세비우스 소프트웨어 엔지니어링 및 엔터프라이즈 아키텍처 분야에서 18년 이상의 경력을 보유한 AWS의 수석 엔터프라이즈 솔루션 아키텍트입니다. 그는 고객이 AWS 플랫폼에서 잘 설계된 애플리케이션을 구축하도록 돕기 위해 고객과 협력합니다. 그는 기술 문제를 해결하고 고객의 클라우드 여정을 돕는 데 열정적입니다.
크루티 자야심하 라오 AI 및 ML에 중점을 둔 파트너 솔루션 설계자입니다. 그녀는 AWS 클라우드에서 안전하고 탄력적이며 가용성이 높은 솔루션을 구축하기 위한 모범 사례에 따라 AWS 파트너에게 기술 지침을 제공합니다.
이샨 베리 엔터프라이즈 검색 엔진인 Amazon Kendra에서 작업하는 Amazon Web Services의 소프트웨어 엔지니어입니다. 그는 보안에 대한 열정이 있으며 지난 2년 동안 Kendra의 액세스 제어 기능의 핵심 구성 요소에 대해 작업했습니다.
아카시 바티아 AWS의 수석 솔루션 아키텍트입니다. 현재 그의 초점은 기업 고객이 혁신적이고 탄력적인 솔루션을 대규모로 설계 및 구현하여 비즈니스 성과를 달성하도록 돕는 것입니다. 그는 Fortune지 선정 15대 기업부터 제조, 항공우주 및 소매 분야의 신생 기업에 이르기까지 다양한 회사에서 100년 이상 기술 분야에서 일했습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 미래 만들기 w Adryenn Ashley. 여기에서 액세스하십시오.
- 출처: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :이다
- $UP
- 10
- 100
- 11
- 15년
- 420
- 7
- 8
- 9
- a
- 할 수 있는
- 소개
- ACCESS
- 달성
- 정확한
- 달성
- 가로질러
- 또한
- 항공우주
- 후
- AI
- 연산
- All
- 수
- 아마존
- 아마존 켄드라
- Amazon Web Services
- 중
- 분석자
- 및
- API를
- 어플리케이션
- 어플리케이션
- 신청
- 접근
- 아키텍처
- 있군요
- AS
- At
- 속성
- 인증
- 권한 부여
- 자동적으로
- 가능
- AWS
- 기반으로
- BE
- 때문에
- 존재
- BEST
- 모범 사례
- 사이에
- 비트
- 블로그
- 빌드
- 사업
- by
- 전화
- 라는
- CAN
- 케이스
- 고객사례
- 도전
- 과제
- 선택
- 왼쪽 메뉴에서
- 주장
- 수업
- 클라이언트
- 클라우드
- 암호
- 기업
- 완전한
- 구성 요소들
- 구성
- 콘솔에서
- 포함하는
- 이 포함되어 있습니다
- 함유량
- 내용
- 제어
- 컨트롤
- 동
- 비용
- 만들
- 만든
- 만들기
- 창조
- 임계
- 암호화는
- cryptographic
- Current
- 관습
- 고객
- 데이터
- 날짜
- 태만
- 보여
- 보여줍니다
- 설계
- 세부 묘사
- 세부설명
- 다른
- 어려운
- 분산
- 문서
- 서류
- 아래 (down)
- ...동안
- 마다
- 용이하게
- 수
- 엔진
- 기사
- 엔지니어링
- 확인
- 엔터 버튼
- Enterprise
- 예
- 교환
- 경험
- 고장
- 특색
- 특징
- Fields
- 파일
- 필터링
- 필터
- 초점
- 따라
- 수행원
- 럭셔리
- 운
- 에
- 가득 찬
- 미래
- 이득
- 생성
- 생성
- 세대
- 그룹
- 여러 떼
- 손님
- 지도
- 안내서
- 있다
- 헤더
- 도움이
- 고도로
- 방법
- How To
- HTML
- HTTP
- HTTPS
- ID
- 식별자
- 통합 인증
- 구현
- import
- in
- 포함
- 포함
- 색인
- 색인
- 개인
- 정보
- 혁신적인
- 즉시
- 를 받아야 하는 미국 여행자
- 명령
- 지능형
- ISS
- 배급
- 발행
- IT
- 그
- 자바
- 요한 복음
- 여행
- JSON
- Jwt
- 키
- 키
- 아이
- 배우다
- 처럼
- 라인
- 명부
- 보기
- 같이
- 봐라.
- 만든
- 확인
- 유튜브 영상을 만드는 것은
- 매니저
- 태도
- 제조
- .
- 경기
- 일치하는
- 방법
- 메타
- 메타 데이터
- 회의록
- ML
- 배우기
- name
- 이름
- 이동
- 카테고리
- 신제품
- 사물
- 관찰
- of
- on
- 열 수
- 오픈 소스
- 주문
- 조직
- 기타
- 요점
- 꾸러미
- 페이지
- 쌍
- 빵
- 매개 변수
- 부품
- 파트너
- 파트너
- 부품
- 패스
- 통과
- 열렬한
- 과거
- 수행
- 실행할 수 있는
- 플랫폼
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 정책
- 게시하다
- 사례
- Prepare
- 이전에
- 교장
- 사설
- 방법
- 생산
- 제공
- 공급자
- 제공
- 공개
- 쿼리
- 범위
- 이르기까지
- 읽기
- 받다
- 접수
- 수신
- 에 관한
- 교체
- 보고서
- 저장소
- 요구조건 니즈
- 탄력
- 제품 자료
- 응답
- 책임
- 결과
- 결과
- 소매
- 유지
- return
- 공개
- 직위별
- RSA
- 달리기
- 규모
- 시나리오
- 검색
- 검색 엔진
- 비밀
- 섹션
- 안전해야합니다.
- 보안
- 안전하게
- 보안
- 별도의
- 서비스
- 서비스 제공 업체
- 서비스
- 세트
- 몇몇의
- SHA256
- 공유
- 공유
- 영상을
- 표시
- 쇼
- 기호
- 서명
- 상당한
- 로그인
- 비슷한
- 단순화
- 소프트웨어
- 소프트웨어 엔지니어
- 소프트웨어 공학
- 해결책
- 솔루션
- 해결
- 출처
- 구체적인
- 지정
- 표준
- 신생 기업
- 단계
- 단계
- 저장
- 간소화 된
- 끈
- 구조
- 연구
- 이러한
- 지원
- 지원
- 체계
- 테이블
- 받아
- 테크니컬
- Technology
- 거주자
- 단말기
- test
- 지원
- 그
- XNUMXD덴탈의
- 정보
- 그들의
- 그들
- Bowman의
- 세
- 을 통하여
- 시간
- 에
- 토큰
- 토큰
- 유형
- 통일
- URL
- 용법
- 사용
- 유스 케이스
- 사용자
- 사용자
- 유효 기간
- 확인
- 가치
- 여러
- 확인
- 확인
- 업종
- 웹
- 웹 서비스
- 잘
- 어느
- 동안
- 백서
- 누구
- 넓은
- 넓은 범위
- 의지
- 과
- 이내
- 없이
- 일
- 일하는
- 일
- 워크숍
- 년
- 자신의
- 너의
- 제퍼 넷
- 지퍼