キーの認証設定

Prev Next

Classic/VPC環境で利用できます。

新規で提供される暗号化/復号化 APIは、既存の NAVERクラウドプラットフォームのアカウント情報を認証情報として使用していた暗号化/復号化 APIといくつかの違いがあります。KMS(Key Management Service) API 2.0で提供される新規 APIは、既存の API 1.0と比べて以下のような違いがあります。

項目 KMS API 1.0 KMS API 2.0
Base URL(ドメイン) https://kms.apigw.ntruss.com https://ocapi.ncloud.com
APIタイプ 暗号化/復号化 API6タイプのみ提供(Encrypt、Decrypt、Create Custom Key、Re-Encrypt、Sign、Verify)
  • 暗号化/復号化 API6タイプ(Encrypt、Decrypt、Create Custom Key、Re-Encrypt、Sign、Verify)
  • コンソールで提供されるキー管理機能をすべて提供
  • 認証方式 NAVERクラウドプラットフォームのアカウント情報を利用したユーザー認証
  • トークン認証 API: キー認証トークン
  • アカウント認証 API: NCPアカウント情報を利用したユーザー認証
  • リクエスト処理性能 Encrypt API(AES)基準システム最大200TPS: すべてのキーが200TPSの処理性能を共有 Encrypt API(AES)基準キーごとに最大300TPS: すべてのキーに対してそれぞれ最大300TPSの処理性能を個別に保証
    可用性確保 リージョン限定 HA: NAVERクラウドプラットフォームのリージョン障害時、Cipher APIに影響あり クロスリージョン HA: 暗号化/復号化 APIは、NAVERクラウドプラットフォームのリージョン障害に影響を与えることなく、無停止動作を保証
    リクエストアクセス制御 Sub Accountサービスで提供するサブアカウント単位の IP ACL機能を利用
  • Sub Accountサービスで提供するサブアカウント単位の IP ACL機能
  • トークン単位で設定可能な IP ACL
  • 参考

    KMS API 1.0は引き続き提供します。

    キーリクエストトークンの概要

    KMS API 2.0の暗号化/復号化 APIリクエストに使用されるトークンは、独自に使われたオーバーライドした JWT(Json Web Token)フォーマットで構成されます。

    トークン構造

    アクセストークンとリフレッシュトークンは、ユーザー認証と権限付与に使用されるトークンで、セキュリティと効率性を考慮してそれぞれのロールが異なります。

    • アクセストークン(Access Token)
      アクセストークンは、クライアントがリソースサーバ(APIなど)にアクセスする際に使用される短寿命のトークンです。ユーザーまたはサービスが認証された後、このトークンを利用して権限が付与されたリソースにアクセスできます。アクセストークンはセキュリティを強化するための措置であり、通常は短時間のみ(数分~数時間)有効です。万が一トークンが流出しても有効期間が短いため、被害を最小限に抑えられるためです。
      ただし、認証トークンの有効期間が短くなると、トークンを新たに発行する面倒なユーザー認証手続きがそれだけ多く行われます。このような状況を補うためにリフレッシュトークンが使用されます。

    • リフレッシュトークン(Refresh Token)
      リフレッシュトークンは、アクセストークンの有効期限が切れた時に、新しいアクセストークンを発行してもらうために使用されます。これにより、ユーザーは再度ユーザー認証(例: ログイン)をすることなく、継続的にサービスを利用できます。
      リフレッシュトークンは、アクセストークンよりもはるかに長い有効期間(数日~数か月)を持ちます。ただし、一般的に権限を最小限に抑えるために、アクセストークンのようにリソースにアクセスするためには使用できません。

    Json Web Token(JWT)方式

    キー単位で個別認証トークンを効率的に使用するため、KMS API 2.0ではトークンを独自に管理するのではなく、Json Web Token(JWT)方式を使用します。トークン例は次の通りです。

    項目 トークン
    リフレッシュトークン eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1YjEyNjg5MC1jMDgxLTExZWMtYmE2ZS0yNDZlOTY1OTE1OTQiLCJpYXQiOjE3MjkwNTI4NzYsImV4cCI6MTcyOTA5NjA3NiwiMSI6IlJFRlJFU0giLCIyIjoia2V5dGFnX19hNjg3NmM0NzFhOGJlYmM1NmRjMGQ2NjRkM2M2NGQ0NTNlZTE3ODIwNWE0YWJhZDE4NDk2NTFkZTNmYTY0MDVkIiwiMyI6IkVYVCIsIjQiOlszMywzNCw0LDE0LDI1LDIwLDEwLDExLDEyLDEzLDYsNyw4LDksMjEsMjMsMjQsMjIsMjYsMTYsMTgsMTksMTUsMTcsMzEsMzAsMzIsMjgsMjksMjcsMSwyLDAsMzksMzUsMzYsMzcsMzhdfQ.CUJ6ht53Pmp_Zht6EygvLeUZn1Kb0uqEIK04V_nxHD2J9BYbUk0w2Y8DkU6me0p7tma7jNStrH-duHCFVRgvmao3Mw5Wk0ir8msQnNxB1l8HWOm6CqJPg4TOfSvjhDjEN4mtrONz1ggprJnLs_yFOe-3BF0dTEqkR8w1Ux2q1XevuJ7-LC9gngFcK-4WOzzWwqY7lm8CnZh09Y-aKI591Ry8yNkTlKa9JAneZaA_GI7szVlMs2bBwwUr6NyaJo818jY7o3NHH6l54S3-useml31vBKTQ2I-yMZUmNpTgkHZvc-c9LJfSeeJ16LHLpFrC9yczkoSAYHv-RfqUr45Srw
    アクセストークン eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1YjEyNjg5MC1jMDgxLTExZWMtYmE2ZS0yNDZlOTY1OTE1OTQiLCJpYXQiOjE3MjkwNTI4NzYsImV4cCI6MTcyOTA2MzY3NiwiMSI6IkFDQ0VTUyIsIjIiOiJrZXl0YWdfX2E2ODc2YzQ3MWE4YmViYzU2ZGMwZDY2NGQzYzY0ZDQ1M2VlMTc4MjA1YTRhYmFkMTg0OTY1MWRlM2ZhNjQwNWQiLCIzIjoiRVhUIiwiNCI6WzMzLDM0LDQsMTQsMjUsMjAsMTAsMTEsMTIsMTMsNiw3LDgsOSwyMSwyMywyNCwyMiwyNiwxNiwxOCwxOSwxNSwxNywzMSwzMCwzMiwyOCwyOSwyNywxLDIsMCwzOSwzNSwzNiwzNywzOF19.HYxASPv_yzjRkxfG3VhDMElJowxC-sAccZWe4ecnIL6YC61uIYPerLIL9paWUqEcBEhTDWGHeJJKe2Qo7RBpwGfGgw7h5dE7JX0blJfSDEiFFr1w92EBN4rpnoQMjEVNwW6EpT3_s6GSgTB6XfeJFIK9rXAuzvy83fCrU3lBBo8Yf3Nfh-1c185AQ_xoSro3hcY_PCaanpUQzOMjqEvEl8L6nYgctBjmDXz3HnSkF3_3IUQOTYR67TRCNNgW1lS9N0oaS_gi6xrbTr7aRzMbexsWyxMipQ1cnY_h4E9iyAK8bkFHUeczEbwUC8W9RMxw3mO3HDqZrCID1wAUcZdj3A
    参考

    JWTタイプのトークンは、 https://jwt.io/でデコードされたトークンを確認できます。

    トークンベースの認証フロー(例)

    1. キー単位でトークンに署名して発行するために、キー管理者はトークン作成者を設定します。
    2. トークン作成者が設定されたら、コンソールまたは Create Token Set APIを利用してトークンペアを発行します。この時、ユーザー認証が必要です。
    3. クライアントはアクセストークンを利用してキーの暗号化/復号化リクエストを行い、そのトークンの有効期限が切れてリクエストが拒否されると、リフレッシュトークンを利用して新しいアクセストークンをリクエストします。
    4. 新しいアクセストークンが発行されると、クライアントは再びキーの暗号化/復号化をリクエストできます。もしリフレッシュトークンの有効期限が切れた場合、再トークン発行ユーザーは再度ユーザー認証を行う必要があります。

    認証設定

    トークン作成者の有効化/無効化

    トークン認証機能を使用するためには、まずトークン作成者を設定する必要があります。トークン作成者を有効化・無効化する方法は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Key Management Service > Keyメニューを順にクリックします。
    2. キーを選択して認証設定タブに移動した後、トークン作成者の有効化をクリックしてトークン作成者を構成します。
    3. トークン作成者がリセットされるとトークン作成者の IDが付与され、トークンを発行できるようになります。
      kms-token_01_ko
    4. トークン作成者の無効化をクリックするとトークン作成者が破棄され、これ以上トークン認証を処理しません。

    トークン作成者のローテーション

    トークン認証機能の使用を維持したまま、トークン作成者のみローテーションすることもできます。トークン作成者のローテーション方法は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Key Management Service > Keyメニューを順にクリックします。
    2. キーを選択して認証設定タブに移動した後、トークン作成者 IDを確認します。
    3. トークン作成者の横にあるローテーションボタンをクリックして、トークン作成者をローテーションします。
    注意

    トークン作成者が廃棄またはローテーションされると、そのトークン作成者が発行したすべてのトークンが自動的に期限切れとなり、このタスクは元に戻せません。したがって、トークンが発行されて使用中の場合は、運用に影響を与えない範囲を十分にご検討のうえ、必ず必要な状況でのみトークン作成者を廃棄またはローテーションしてください。

    トークン作成

    トークン作成者が設定されている場合、トークンを発行できます。

    1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Key Management Service > Keyメニューを順にクリックします。
    2. キーを選択して認証設定タブに移動した後、トークン作成者 IDを確認します。
    3. トークン作成ボタンをクリックし、有効期間を入力します。
      • リフレッシュトークン TTL: 時間単位で入力し、最小1時間から最大17,520時間(730日)まで設定できます。入力しない場合、デフォルトの2160時間(90日)に設定されます。
      • アクセストークン TTL: 時間単位で入力し、最小1時間から最大17,520時間(730日)まで設定できます。入力しない場合、デフォルトの72時間(3日)に設定されます。
    4. 確認をクリックして、発行されたトークンを確認します。トークン発行のポップアップが閉じられると、発行されたトークンは失効しますのでご注意ください。
      kms-token_02_ko

    トークン

    IP ACL設定

    認可されていないクライアントからのトークンの誤用を防ぐために、トークン使用が許可されたリクエスタの IPアドレスを指定できます。

    1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Key Management Service > Keyメニューを順にクリックします。
    2. キーを選択して認証設定タブに移動した後、 IP ACLボタンを有効にします。IP ACLが有効になってから発行されるトークンは、リクエスト IPアドレスの検証が行われます。
      注意
      • IP ACLが有効になると、基本的に「All Deny」で動作します。したがって、IP ACL機能を有効にすると、必ず許可 IPアドレスを登録することでトークンを正しく使用できるようになります。
      • また、IP ACLが有効になる前に発行されたトークンもリクエスト IPアドレスの検証を行います。もし、IP ACL機能を有効になる前に発行されたトークンが許可された IPアドレスからリクエストされない場合は、検証に失敗しますのでご注意ください。
    3. IPアドレスを入力し、追加ボタンをクリックして許可リストに登録します。IPアドレスは登録後すぐに許可されます。
    4. 削除したい IPアドレスがある場合は、当該項目の横にある削除ボタンをクリックして許可リストから削除します。IPアドレスは削除後すぐに拒否されます。
      kms-token_03_ko