資格情報のローテーションを行う
Auth0では、コンプライアンスを強化するため、また、秘密鍵の漏洩によってセキュリティが損なわれないように、定期的な鍵素材のローテーションを推奨しています。Auth0 DashboardやManagement APIを使用すると、新しい鍵にローテーションして使うことができます。新しい資格情報を作成し、private_key_jwt
での認証方法と関連付けて、未使用または古い資格情報を削除する必要があります。
Auth0 Dashboardでアプリケーションの資格情報をローテーションする方法:
[Auth0 Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)]に移動し、更新したいアプリケーションを選択します。
[Credentials(資格情報)]タブに切り替えます。
[Available Credentials(利用可能な資格情報)]セクションで、[Add New Key(新しいキーを追加)]を選択します。
新しい資格情報の名前、PEM形式の公開鍵、新しい資格情報のアルゴリズムを設定します。
[Add Credential(資格情報の追加)]を選択します。
新しい資格情報を有効にするには、資格情報のメニューに移動し、[Enable for Private Key JWT use(秘密鍵JWTの使用を有効にする)]を選択します。
新しい資格情報を使用するためにアプリケーションを更新したら、元の資格情報は無効にします。
[Disable for Private Key JWT Use(秘密鍵JWTの使用を無効にする)]を選択します。
無効にしたら、資格情報のメニューに戻り、[Delete Credential(資格情報の削除)]を選択します。
下のローテーション例は、credential
は使用している既存の資格情報、credential2
は既存の資格情報に代わる新しい資格情報です。
新しいキーペアを生成します。
Management APIに対して
POST
要求を使用して、資格情報リソースを作成します。Management APIのクライアントの更新エンドポイントにPATCH要求を行い、認証方法
private_key_jwt
に資格情報を関連付けます。curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \ --header 'Authorization: Bearer {managementApiAccessToken} \ --header 'Content-Type: application/json' \ --data-raw '{ "client_authentication_methods": { "private_key_jwt": { "credentials": [{ "id": {credentialId1} }, { "id": {credentialId2} }] } } }'
Was this helpful?
/パラメーター 説明 clientId
更新したいアプリケーション。 credentialId1
使用している既存の資格情報のID。 credentialId2
新しい資格情報のID。 managementApiAccessToken
update:clients
とupdate:credentials
のスコープを持つManagement APIのアクセストークン。アプリケーションを更新し、新しい秘密鍵を使用して、Auth0認証APIに対してアサーションを署名します。
使用していないキーをアプリケーションから削除します。
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \ --header 'Authorization: Bearer $management_access_token' \ --header 'Content-Type: application/json' \ --data-raw '{ "client_authentication_methods": { "private_key_jwt": { "credentials": [{ "id": {credentialId2} }] } } }'
Was this helpful?
/使用していないキーをアプリケーションから削除します。これにより、ストレージから資格情報を永久に削除します。資格情報をアプリケーションから解除しなければ、削除できません。
curl --location --request DELETE 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId}' \ --header 'Authorization: Bearer {managementApiAccessToken}
Was this helpful?
/パラメーター 説明 clientId
更新したいアプリケーション。 credentialId
削除したい古い資格情報のID。 managementApiAccessToken
delete:credentials
のスコープを持つManagement APIのアクセストークン。
アクティブな資格情報
ダウンタイムが発生しないように、ローテーション中は複数の資格情報がアクティブであっても構いません。鍵が更新されるまでは、アプリケーションが古い鍵を使用しても正常に動作します。アプリケーションは、アクティブであればどのような資格情報を使っても、署名のあるアサーションを送信することができます。
ただし、複数の資格情報が使われる時間は最小限に留めることをお勧めします。以下は、複数の資格情報を使用している例です。
curl --location --request PATCH 'https://$tenant/api/v2/clients/$client_id' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": $credential1.id }, { "id": $credential2.id }]
}
}
}'
Was this helpful?