기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
JSON 웹 토큰(JWT)을 퍼블릭 키와 함께 사용
다음 예는 인덱스를 생성할 때 사용자 액세스 제어를 위한 공개 키와 함께 JSON 웹 토큰 (JWT) 을 사용하는 방법을 보여줍니다. JWT에 대한 자세한 내용은 jwt.io
- Console
-
-
새 인덱스 생성을 시작하려면 인덱스 생성을 선택합니다.
-
인덱스 세부정보 지정 페이지에서 인덱스에 이름과 설명을 입력합니다.
-
IAM 역할에서 역할을 선택하거나 새 역할 생성을 선택하고 역할 이름을 지정하여 새 역할을 생성합니다. IAM 역할 접두사는 "AmazonKendra- “입니다.
-
다른 모든 필드의 기본값은 그대로 둡니다. 다음을 선택합니다.
-
사용자 액세스 제어 구성 페이지의 액세스 제어 설정에서 예를 선택하여 액세스 제어에 토큰을 사용합니다.
-
토큰 구성에서 토큰 유형으로 퍼블릭 키와 JWT를 선택합니다.
-
퍼블릭 키 서명 파라미터에서 암호 유형을 선택합니다. 기존의 AWS Secrets Manager 암호를 사용하거나 새 암호를 생성할 수 있습니다.
새 암호를 생성하려면 새로 만들기를 선택한 후 다음 단계를 수행합니다.
-
새 AWS Secrets Manager 비밀번호에서 시크릿 이름을 지정합니다. 퍼블릭 키를 저장하면
AmazonKendra-
접두사가 추가됩니다. -
키 ID를 지정합니다. 키 ID는 토큰의 JSON 웹 서명을 보호하는 데 어떤 키가 사용되었는지 나타내는 힌트입니다.
-
토큰의 서명 알고리즘을 선택합니다. ID 토큰을 보호하는 데 사용되는 암호화 알고리즘입니다. RSA에 대한 자세한 내용은 RSA 암호화
를 참조하세요. -
인증서 속성에서 선택적 인증서 체인을 지정합니다. 인증서 체인은 인증서 목록으로 구성됩니다. 서버의 인증서로 시작하여 루트 인증서로 종료됩니다.
-
선택 사항 엄지 또는 검지 지문을 지정합니다. 모든 인증서 데이터와 서명을 대상으로 계산된 인증서의 해시여야 합니다.
-
지수를 지정합니다. RSA 퍼블릭 키의 지수 값입니다. 이 값은 Base64urlUInt 인코딩 값으로 표현됩니다.
-
모듈러스를 지정합니다. RSA 퍼블릭 키의 지수 값입니다. 이 값은 Base64urlUInt 인코딩 값으로 표현됩니다.
-
키 저장을 선택하여 새 키를 저장합니다.
-
-
선택 사항 고급 구성에서:
-
ACL 검사에 사용할 사용자 이름을 지정합니다.
-
ACL 검사에 사용할 그룹을 하나 이상 지정합니다.
-
토큰 발행자를 검증할 발행자를 지정합니다.
-
클라이언트 ID를 지정합니다. JWT의 대상과 일치하는 정규 표현식을 지정해야 합니다.
-
-
프로비저닝 세부 정보 페이지에서 개발자 에디션을 선택합니다.
-
생성을 선택하여 인덱스를 생성합니다.
-
색인이 생성될 때까지 기다리세요. Amazon Kendra 인덱스의 하드웨어를 프로비저닝합니다. 이 작업에는 다소 시간이 걸릴 수 있습니다.
-
- CLI
-
AWS Secrets Manager내부에 퍼블릭 키가 있는 JWT를 사용할 수 있습니다. Secrets Manager ARN이 필요하며 Amazon Kendra 역할에 리소스에
GetSecretValue
대한 액세스 권한이 있어야 합니다. Secrets Manager 를 사용하여 Secrets Manager AWS KMS리소스를 암호화하는 경우 역할에 암호 해독 작업에 대한 액세스 권한도 있어야 합니다.JSON 입력 파일을 AWS CLI 사용하여 색인을 만들려면 먼저 원하는 매개변수를 사용하여 JSON 파일을 생성합니다.
{ "Name": "
user-context
", "Edition": "ENTERPRISE_EDITION
", "RoleArn": "arn:aws:iam::account id
:role:/my-role
", "UserTokenConfigurationList": [ { "JwtTokenTypeConfiguration": { "KeyLocation": "SECRET_MANAGER", "Issuer": "optional: specify the issuer url
", "ClaimRegex": "optional: regex to validate claims in the token
", "UserNameAttributeField": "optional: user
", "GroupAttributeField": "optional: group
", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2
:account id
:secret:/my-user-context-secret
} } ], "UserContextPolicy": "USER_TOKEN" }기본 사용자 및 그룹 필드 이름을 재정의할 수 있습니다.
UserNameAttributeField
의 기본값은 “user”입니다.GroupAttributeField
의 기본값은 "groups"입니다.다음으로, 입력 파일을 사용하여
create-index
를 호출합니다. 예를 들어 JSON 파일 이름이create-index-openid.json
인 경우 다음을 사용할 수 있습니다.aws kendra create-index --cli-input-json file://create-index-openid.json
시크릿의 형식은 다음과 같아야 합니다. Secrets Manager
{ "keys": [ { "alg": "RS256|RS384|RS512", "kty": "RSA", //this can be RSA only for now "use": "sig", //this value can be sig only for now "n": "
modulus of standard pem
", "e": "exponent of standard pem
", "kid": "key_id
", "x5t": "certificate thumprint for x.509 cert
", "x5c": [ "certificate chain
" ] } ] }JWT에 대한 자세한 내용은 jwt.io
를 참조하세요. - Python
-
response = kendra.create_index( Name='
user-context
', Edition='ENTERPRISE_EDITION
', RoleArn='arn:aws:iam::account id
:role:/my-role
', UserTokenConfigurationList=[ { "JwtTokenTypeConfiguration": { "KeyLocation": "URL", "Issuer": "optional: specify the issuer url
", "ClaimRegex": "optional: regex to validate claims in the token
", "UserNameAttributeField": "optional: user
", "GroupAttributeField": "optional: group
", "SecretManagerArn": "arn:aws:secretsmanager:us-west-2
:account id
:secret:/my-user-context-secret
" } } ], UserContextPolicy='USER_TOKEN' )