翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パブリックキーでの JSON ウェブトークン (JWT) の使用
次の例は、インデックスを作成するときに、パブリックキーで JSON ウェブトークン (JWT) をユーザーアクセスコントロールに使用する方法を示しています。JWT の詳細については、jwt.io
- Console
-
-
[Create index] (インデックスの作成) を選択して、新しいインデックスの作成を開始します。
-
[Specify index details] (インデックスの詳細の指定) ページで、インデックスに名前と説明を付けます。
-
[IAM role] (IAM ロール) には、ロールを選択するか、または [Create a new role] (新規ロールの作成) を選択し、新しいロールを作成してロール名を指定します。 IAM ロールには、プレフィックス「AmazonKendra-」が付いています。
-
その他のフィールドはすべてデフォルトのままにしておきます。[Next (次へ)] を選択します。
-
[Configure user access control] (ユーザーアクセスコントロールの設定) ページの、[Access control settings] (アクセスコントロールの設定) で、[Yes] (はい) を選択し、アクセス制御にトークンを使用します。
-
[Token configuration] (トークンの設定) で、[JWT with public key] (パブリックキーを使用したJWT) を [Token type] (トークンタイプ) として選択します。
-
[Parameters for signing public key] (パブリックキーに署名するためのパラメータ) で、[Type of secret] (シークレットのタイプ) を選択します。既存の AWS Secrets Manager シークレットを使用するか、新しいシークレットを作成できます。
新しいシークレットを作成するには、[New] (新規) を選択し、次に、以下のステップを実行します。
-
新しい AWS Secrets Manager シークレットで、シークレット名を指定します。プレフィックス
AmazonKendra-
は、パブリックキーを保存すると追加されます。 -
[Key ID] (キー ID) を指定します。キー ID は、トークンの JSON ウェブ署名をセキュア化するために使用されたキーを示すヒントです。
-
トークンに署名 [Algorithm] (アルゴリズム) を選択します。これは、ID トークンの保護に使用される暗号化アルゴリズムです。RSA の詳細については、RSA Cryptography
を参照してください。 -
[Certificate attributes] (証明書属性) で、オプションの [Certificate chain] (証明書チェーン) を指定します。証明書チェーンは、証明書のリストで構成されます。サーバーの証明書で始まり、ルート証明書で終了します。
-
オプション [Thumbprint or fingerprint] (サムプリントまたはフィンガープリント) を指定します。これは、すべての証明書データとその署名に対してコンピューティングされた証明書のハッシュです。
-
[Exponent] (指数) を指定します。これは RSA パブリックキーの指数値です。これは、Base64urlUInt でエンコードされた値として表されます。
-
[Modulus] (係数) を指定します。これは RSA パブリックキーの指数値です。これは、Base64urlUInt でエンコードされた値として表されます。
-
[Save key] (キーを保存) を選択して新しいキーを保存します。
-
-
[Advanced configuration] (詳細設定) の [Optional] (オプション):
-
[Username] (ユーザーネーム) を指定して ACL チェックで使用します。
-
1 つ以上の [Groups] (グループ) を指定して、ACL チェックで使用します。
-
トークン発行者を検証する [Issuer] (発行者) を指定します。
-
[Client Id(s)] (クライアント ID) を指定します。JWT のオーディエンスと一致する正規表現を指定する必要があります。
-
-
[Provisioning details] (プロビジョニングの詳細) ページで、[Developer edition] (デベロッパーエディション) を選択します。
-
[Create] (作成) を選択してインデックスを作成します。
-
インデックスが作成されるまで待ちます。 は、インデックスのハードウェアを Amazon Kendra プロビジョニングします。この演算には時間がかかる場合があります。
-
- CLI
-
JWT は、 AWS Secrets Managerの内部のパブリックキーで使用できます。 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
", "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
のデフォルト値は「ユーザー」です。GroupAttributeField
のデフォルト値は「グループ」です。次に、入力ファイルを使用して、
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' )