기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
공유 암호가 있는 JSON 웹 토큰(JWT) 사용
다음 예제에서는 인덱스를 생성할 때 사용자 액세스 제어를 위해 공유 보안 암호 토큰과 함께 JSON 웹 토큰(JWT)을 사용하는 방법을 보여줍니다.
- Console
-
-
새 인덱스 생성을 시작하려면 인덱스 생성을 선택합니다.
-
인덱스 세부정보 지정 페이지에서 인덱스에 이름과 설명을 입력합니다.
-
IAM 역할에서 역할을 선택하거나 새 역할 생성을 선택하고 역할 이름을 지정하여 새 역할을 생성합니다. IAM 역할에는 “AmazonKendra-”라는 접두사가 붙습니다.
-
다른 모든 필드의 기본값은 그대로 둡니다. Next(다음)를 선택합니다.
-
사용자 액세스 제어 구성 페이지의 액세스 제어 설정에서 예를 선택하여 액세스 제어에 토큰을 사용합니다.
-
토큰 구성에서 토큰 유형으로 공유 암호와 JWT를 선택합니다.
-
공유 암호 서명 파라미터에서 암호 유형을 선택합니다. 기존의 AWS Secrets Manager 공유 암호를 사용하거나 새 공유 암호를 생성할 수 있습니다.
새 공유 암호를 생성하려면 새로 만들기를 선택한 후 다음 단계를 수행합니다.
-
새 AWS Secrets Manager 보안 암호에서 보안 암호 이름을 지정합니다. 퍼블릭 키를 저장하면
AmazonKendra-
접두사가 추가됩니다. -
키 ID를 지정합니다. 키 ID는 토큰의 JSON 웹 서명을 보호하는 데 어떤 키가 사용되었는지 나타내는 힌트입니다.
-
토큰의 서명 알고리즘을 선택합니다. ID 토큰을 보호하는 데 사용되는 암호화 알고리즘입니다. RSA에 대한 자세한 내용은 RSA 암호화
를 참조하세요. -
base64 URL로 인코딩된 암호를 입력하여 공유 암호를 지정합니다. 암호 생성을 선택하여 암호가 자동으로 생성되도록 할 수도 있습니다. 암호가 base64 URL로 인코딩된 암호인지 확인해야 합니다.
-
(선택 사항) 공유 암호가 유효한 시기를 지정합니다. 암호가 유효한 날짜와 시간(시작, 종료, 또는 둘 모두)을 지정할 수 있습니다. 암호는 지정한 기간 동안 유효합니다.
-
암호 저장을 선택하여 새 암호를 저장합니다.
-
-
(선택 사항) 고급 구성에서:
-
ACL 검사에 사용할 사용자 이름을 지정합니다.
-
ACL 검사에 사용할 그룹을 하나 이상 지정합니다.
-
토큰 발행자를 검증할 발행자를 지정합니다.
-
클레임 ID를 지정합니다. JWT의 대상과 일치하는 정규 표현식을 지정해야 합니다.
-
-
프로비저닝 세부 정보 페이지에서 개발자 에디션을 선택합니다.
-
생성을 선택하여 인덱스를 생성합니다.
-
인덱스가 생성될 때까지 기다립니다. Amazon Kendra 는 인덱스의 하드웨어를 프로비저닝합니다. 이 작업에는 다소 시간이 걸릴 수 있습니다.
-
- CLI
-
JWT 토큰을 내부 공유 보안 암호와 함께 사용할 수 있습니다 AWS Secrets Manager. 암호는 base64 URL로 인코딩된 암호여야 합니다. Secrets Manager ARN이 필요하며 Amazon Kendra 역할은 Secrets Manager 리소스에서
GetSecretValue
에 액세스할 수 있어야 합니다. 를 사용하여 Secrets Manager 리소스를 암호화하는 경우 AWS KMS역할도 복호화 작업에 액세스할 수 있어야 합니다.JSON 입력 파일을 AWS CLI 사용하여 로 인덱스를 생성하려면 먼저 원하는 파라미터로 JSON 파일을 생성합니다.
{ "Name": "
user-context
", "Edition": "ENTERPRISE_EDITION
", "RoleArn": "arn:aws:iam::account-id
:role:/my-role
", "UserTokenConfigurations": [ { "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
보안 암호의 형식은 AWS Secrets Manager다음과 같아야 합니다.
{ "keys": [ { "kid": "
key_id
", "alg": "HS256|HS384|HS512", "kty": "OCT", "use": "sig", //this value can be sig only for now "k": "secret
", "nbf":"ISO1806 date format
" "exp":"ISO1806 date format
" } ] }JWT에 대한 자세한 내용은 jwt.io
를 참조하세요. - Python
-
JWT 토큰을 내부 공유 보안 암호와 함께 사용할 수 있습니다 AWS Secrets Manager. 암호는 base64 URL로 인코딩된 암호여야 합니다. Secrets Manager ARN이 필요하며 Amazon Kendra 역할은 Secrets Manager 리소스에서
GetSecretValue
에 액세스할 수 있어야 합니다. 를 사용하여 Secrets Manager 리소스를 암호화하는 경우 AWS KMS역할도 복호화 작업에 액세스할 수 있어야 합니다.response = kendra.create_index( Name='
user-context
', Edition='ENTERPRISE_EDITION
', RoleArn='arn:aws:iam::account-id
:role:/my-role
', UserTokenConfigurations=[ { "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' )