すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:アプリケーションアクセスに関するよくある質問

最終更新日:Dec 18, 2025

このトピックでは、アプリケーションがソフトウェア開発キット (SDK) を使用して Key Management Service (KMS) にアクセスする際に発生する可能性のある問題について説明します。

質問

KMS インスタンスへのアクセス時に「no such host」または「not known」エラーが発生する

問題の説明

  • アプリケーションが KMS Instance SDK for Go を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: kst-xxx.cryptoservice.kms.aliyuncs.com: no such host

  • アプリケーションが KMS Instance SDK for Java を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: kst-xxx.cryptoservice.kms.aliyuncs.com: nodename nor servname provided, or not known

原因

KMS インスタンスを購入すると、専用のキーおよびシークレット管理サービスが提供されます。 このインスタンスには、設定して関連付けた Virtual Private Cloud (VPC) からのみアクセスできます。

解決策

  • アプリケーションの VPC と KMS インスタンスが同じリージョンにある場合は、VPC を KMS インスタンスに関連付けます。 詳細については、「同一リージョン内の複数の VPC から KMS インスタンスにアクセスする」をご参照ください。

    KMS インスタンスに関連付けられている VPC を確認するには、「KMS インスタンスの詳細の表示」をご参照ください。

  • アプリケーションの VPC と KMS インスタンスが異なるリージョンにある場合は、アプリケーションの VPC と KMS インスタンスの VPC との間にネットワーク接続を確立します。

アプリケーションアクセスポイントを使用して KMS インスタンスにアクセスすると「Forbidden.NoPermission」エラーが発生する

問題の説明

KMS インスタンスにアクセスすると、返されるエラーの説明または SDK の例外メッセージに次の内容が含まれます: Forbidden.NoPermission : This operation is forbidden by permission system.

解決策

アプリケーションアクセスポイント (AAP) の権限ポリシーでは、[RBAC 権限][アクセス可能なリソース] で必要なキーまたはシークレットに対する権限が付与されていません。 詳細については、「アプリケーションアクセスポイントの作成」をご参照ください。

シークレット値の取得時に「This operation for key-xxxxxx is forbidden by permission system」エラーが発生する

問題の説明

シークレット値を取得すると、KMS から返されるエラーの説明または SDK の例外メッセージに次の内容が含まれます: This operation for key-xxxxxx is forbidden by permission system

以下は、KMS インスタンス用の Java SDK からの例外メッセージの例です:

获取凭据值时报错

原因

アプリケーションには、復号のためにキーを使用する権限がありません。

シークレットを作成する際には、シークレット値を暗号化するために同じ KMS インスタンスからキーを選択する必要があります。 アプリケーションが KMS からシークレットをリクエストする場合、対応するキーを使用してシークレット値を復号する必要があります。 したがって、アプリケーションには、シークレットを使用する権限と、復号のために対応するキーを使用する権限が必要です。

解決策

  • シナリオ 1: AAP のクライアントキーを使用した KMS へのアクセス

    AAP の権限ポリシーを編集して、アプリケーションに復号のためにキーを使用する権限を付与します。

    1. Key Management Service コンソールにログインします。 上部のメニューバーでリージョンを選択します。 左側のナビゲーションウィンドウで、アプリケーションアクセス > AAPs を選択します。

    2. 対象の AAP の名前をクリックして、詳細 ページに移動します。

    3. 権限ポリシーの 操作 列で、Modify をクリックします。 次の項目を設定し、[更新] をクリックします。

      • RBAC の権限: CryptoServiceKeyUser を選択します。

      • アクセス可能のリソース: 利用可能なリソース セクションで、1 つ以上のキーを選択し、image.png アイコンをクリックします。 また、選択中のリソース の横にある plus sign アイコンをクリックして、key/キー ID フォーマット (例: key/key-hzz6xxxxxx) でキーを追加することもできます。

  • シナリオ 2: RAM ユーザーまたは RAM ロールの AccessKey ペアを使用した KMS へのアクセス

    RAM 権限ポリシーを編集して、アプリケーションに復号のためにキーを使用する権限を付与します。

    1. RAM コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[権限管理] > [ポリシー] を選択します。

    3. RAM ユーザーまたは RAM ロールにアタッチされている権限ポリシーを見つけて、ポリシー名をクリックします。

    4. [ポリシードキュメント] タブで、[ポリシードキュメントの変更] をクリックします。 次のスクリプトを Statement フィールドに追加し、[基本情報の編集を続行] をクリックしてから、[OK] をクリックします。

              {
                  "Effect": "Allow",
                  "Action": "kms:Decrypt",
                  "Resource": "acs:kms:${region}:${account}:key/keyId-example"
              }

      権限ポリシーの詳細については、「Key Management Service のカスタム権限ポリシー」をご参照ください。

キーへのアクセスまたは使用時に「Forbidden.KeyNotFound」エラーが発生する

原因: このエラーは通常、リクエストで指定されたリージョン、キー ID、またはエイリアスが、暗号化に使用されたパラメーターと一致しないために発生します。

解決策: 復号操作に使用するリージョン、キー ID、またはエイリアスが、暗号化に使用したものと同一であることを確認してください。

KMS API 操作の呼び出し時に「UnsupportedOperation」エラーが発生する

  • ネットワークアクセス設定のエラー

    • 原因: アプリケーションは Alibaba Cloud SDK を使用して、KMS インスタンスで作成されたキーで暗号化操作を実行します。

    • 解決策:

      1. Key Management Service コンソールにログインします。 上部のメニューバーでリージョンを選択します。 左側のナビゲーションウィンドウで、リソース > インスタンス管理 を選択します。

      2. インスタンス一覧ページで、対象のインスタンス ID をクリックし、詳細ページの Share Resources タブでインターネットアクセスを有効にします。

        KMS インスタンスが複数の Alibaba Cloud アカウントと共有されている場合、各アカウントのインターネットアクセス権限を設定できます。image

      3. Instance タブに切り替えて、パブリックエンドポイントを表示します。image

  • 不正なキータイプの使用

    • 原因: アプリケーションは、SDK を使用して EncryptDecryptGenerateDataKey などの暗号化操作 API を呼び出す際に、サービスキーを使用しています。

    • 解決策: アプリケーションは、他のクラウド製品によって管理されるサービスキーではなく、カスタマーマスターキー (CMK) を直接使用して暗号化操作を実行する必要があります。

  • キーアルゴリズムと API の不一致

    • シナリオ 1: 暗号化、復号、データキーの生成

      • GenerateDataKey API を呼び出す際、CMK のキーアルゴリズムが RSA、ECC、 などの非対称アルゴリズムです。

      • 解決策: CMK のキーアルゴリズムが AES などの対称アルゴリズムであり、そのキーの使用法が [ENCRYPT/DECRYPT] に設定されていることを確認してください。

    • シナリオ 2: 署名と検証

      • Sign または Verify API を呼び出す際、CMK のキーアルゴリズムが AES などの対称暗号アルゴリズムです。

      • 解決策: CMK のキーアルゴリズムが RSA、ECC、 などの非対称アルゴリズムであり、そのキーの使用法が [SIGN/VERIFY] に設定されていることを確認してください。

KMS インスタンスへのアクセス時に「unable to find valid certification path to requested target」エラーが発生する

考えられる原因 1: CA 証明書のダウンロード時に不正な KMS インスタンスが選択された

  1. Key Management Service コンソールにログインします。 上部のメニューバーでリージョンを選択します。 左側のナビゲーションウィンドウで、リソース > インスタンス管理 を選択します。

  2. インスタンス管理 ページで、インスタンスCA証明書 の下にある ダウンロード をクリックします。

  3. インスタンスCA証明書 ダイアログボックスで、インスタンス ID を選択し、ダウンロード をクリックして、証明書を安全に保存します。

    デフォルトでは、ダウンロードされた CA 証明書ファイルの名前は PrivateKmsCA_kst-******.pem です。 この証明書は後で SDK に統合され、KMS インスタンスの SSL 証明書の信頼性を検証します。

考えられる原因 2: SDK パッケージのバージョンが正しくない

最新バージョンの SDK をインストールしてください。 以下は、KMS Instance SDK のオープンソースリポジトリへのリンクです:

KMS インスタンスのドメイン名を解決できない

問題の説明

KMS インスタンスが存在する VPC または関連付けられた VPC で、アプリケーションが KMS インスタンスのドメイン名にアクセスできません。 たとえば、ping kst-hzz62****.cryptoservice.kms.aliyuncs.com コマンドを実行すると、ドメイン名を解決できず、「cannot resolve」を含むメッセージが返されます。

解決策

サーバーの DNS 設定がデフォルトの 100.100.2.136/100.100.2.138 に設定されているかどうかを確認してください。 詳細については、「PrivateZone を使用するためにサーバーの DNS 設定を変更する必要がありますか?」をご参照ください。

アプリケーションが KMS インスタンスにアクセスすると「incorrect ClientKey password」メッセージが返される

問題の説明

  • KMS Instance SDK for Java を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: java.io.IOException: keystore password was incorrect

  • KMS Instance SDK for PHP を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: Could not decrypt the privateKey of clientKey, the password is incorrect, or it is not a valid pkcs12

  • KMS Instance SDK for Go を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: panic: pkcs12: decryption password incorrect

  • KMS Instance SDK for Python を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: OpenSSL.crypto.Error: [('PKCS12 routines', '', 'mac verify failure')]

原因

クライアントキーのパスワードが正しくありません。

解決策

  • クライアントキーのパスワードがフォーマット要件を満たしているか確認してください。 満たしていない場合は、新しいクライアントキーを作成してください。 詳細については、「クライアントキーの作成」をご参照ください。

    クライアントキーのパスワードは 8~64 文字で、数字、小文字、大文字、特殊文字 (~!@#$%^&*?_-) のうち少なくとも 2 種類を含んでいる必要があります。

  • ファイルからクライアントキーのパスワードを読み取る場合、パスワードファイルはパスワードの内容が 1 行のみ含まれるテキストファイルである必要があります。 ファイルの内容には、改行やタブ文字など、パスワードのフォーマット要件を満たさない特殊文字を含めることはできません。

アプリケーションが KMS インスタンスにアクセスすると HTTP 413 ステータスコードが返される

すべてのリクエストパラメーターが Protocol Buffers (つまりリクエストボディ) を使用してエンコードされた後、コンテンツの長さが 3 MB を超えることはできません。 超えた場合、サーバー側はリクエストを拒否し、HTTP 413 ステータスコードを返します。

  • 暗号化および復号操作: 1 回の暗号化または復号操作のデータは、対称キーの場合は 6 KB、非対称キーの場合は 1 KB を超えないようにすることを推奨します。 データがこれらの制限を超える場合は、エンベロープ暗号化を使用してください。

  • 署名および検証操作: 署名するメッセージが大きい場合は、アプリケーションでローカルにメッセージのダイジェストを生成し、Sign/Verify API を呼び出して署名または検証を実行することを推奨します。

アプリケーションが KMS インスタンスにアクセスすると「UnknownHostException」エラーが返される

問題の説明

アプリケーションが KMS Instance SDK for Java を使用して KMS インスタンスにアクセスすると、次のエラーが返されます: Caused by: java.net.UnknownHostException: kst-hzz664da459rvtjtd****.cryptoservice.kms.aliyuncs.com

解決策

  1. ご利用のアプリケーション環境が KMS インスタンスの VPC ネットワークに接続されていることを確認してください。

    アプリケーションの VPC と KMS インスタンスが同じリージョンにある場合は、VPC を KMS インスタンスにアタッチします。 詳細については、「同一リージョン内の複数の VPC から KMS インスタンスにアクセスする」をご参照ください。 その他のシナリオについては、以下の解決策をご参照ください。

    • VPC 間の相互接続ソリューション

      Cloud Enterprise Network (CEN)、VPN Gateway、VPC ピアリング接続、または PrivateLink を使用して、VPC 間のプライベートネットワークピアリングを有効にできます。 これらの VPC 間相互接続ソリューションの機能、説明、および設定方法の詳細については、「VPC 相互接続」をご参照ください。

    • VPC がパブリックネットワークに接続する方法

      ECS インスタンスの固定パブリック IP アドレス、Elastic IP Address (EIP)、NAT Gateway、または Server Load Balancer を使用して、VPC 内のクラウドリソースがパブリックネットワークにアクセスしたり、パブリックネットワークからアクセスされたりするようにできます。 詳細については、「パブリックネットワークアクセス」をご参照ください。

    • VPC がデータセンターに接続する方法

      VPN Gateway、Express Connect 回線、または Smart Access Gateway を使用して、オンプレミスのデータセンターをクラウド上の VPC に接続し、ハイブリッドクラウドを構築できます。 詳細については、「VPC をオンプレミスのデータセンター/他のクラウドに接続する」をご参照ください。

  2. KMS VPC の DNS 解決が正しく設定されていることを確認してください。 DNS 解決設定の詳細については、「内部 DNS 解決の概要」をご参照ください。

KMS のシークレット管理機能は Android でサポートされていますか?

シークレット管理機能は現在 Android ではサポートされていません。

KMS のエンドポイントにアクセスできない

この問題は通常、SDK を使用して KMS にアクセスする際に HTTPS プロトコルが有効になっていないために発生します。

データセキュリティを確保するため、KMS のエンドポイントは HTTPS プロトコルのみをサポートしています。 したがって、SDK を使用して KMS のエンドポイントにアクセスする際は、次のコードを実行して KMS で HTTPS が有効になっていることを確認してください。

req.setProtocol(ProtocolType.HTTPS);

オンプレミスのデータセンターがドメイン名で KMS インスタンスにアクセスできない

問題の説明

オンプレミスのデータセンターと Alibaba Cloud VPC との間にネットワーク接続が確立された後、オンプレミスのデータセンターは、追加の設定なしで PrivateZone で設定されたドメイン名 kms.aliyuncs.com を使用して KMS インスタンスにアクセスできません。

解決策

  1. Express Connect ルーターで、100.100.2.136 と 100.100.2.138 のルートセグメントを許可し、オンプレミスのデータセンターが 100.100.2.136 と 100.100.2.138 に ping できるようにします。 Express Connect ルーターの設定に関する問題については、ネットワーク PDSA にご相談いただくか、次のドキュメントをご参照ください: クラウドとオンプレミス間のネットワーク相互接続Express Connect 回線を介してオンプレミスのデータセンターを VPC に接続するルートエントリの追加と管理、および Express Connect 回線を介してオンプレミスのデータセンターからのメッセージを Message Queue for Apache RocketMQ を使用して処理する

    重要

    ご利用のデータセンターが Alibaba Cloud のエンタープライズネットワークまたは Express Connect 回線に接続されていない場合は、プロバイダーにルーターの設定についてご相談ください。

  2. ローカルのプライマリ DNS 設定ファイル named.conf を変更して、KMS ドメイン名 (kms.aliyuncs.com) のクエリを Alibaba Cloud DNS に転送します。 次の設定を参照できます:

    zone "kms.aliyuncs.com" { 
            type forward; 
            forwarders { 100.100.2.136;100.100.2.138;}; 
    };
    説明

    ルート転送の設定は、DNS ソフトウェアによって若干異なる場合があります。 ソフトウェアのユーザーガイドに基づいて設定を完了してください。

ack-secret-manager を使用して ACK から KMS シークレットを同期する際に「QPS Limit Exceeded」エラーが発生する

原因

多数の KMS シークレットが同期されると、KMS のスロットリングポリシーがトリガーされ、同期が失敗します。

解決策

この問題は、ack-secret-manager のバージョン 0.5.2 で修正されています。 バージョン 0.5.2 以降にアップグレードしてください。 最新バージョンへのアップグレードを推奨します。

専用ゲートウェイ経由で暗号化操作の OpenAPI を呼び出す際に「MissingParameter」エラーが発生する

問題の説明

Alibaba Cloud SDK を使用して専用ゲートウェイ経由で暗号化操作の OpenAPI を呼び出すと、MissingParamter AParamter x-kms-acccesskeyid does not exist in http header or body "$430c76cd-****** エラーが返されます。

原因

KMS インスタンスのイメージバージョンが 3.0.0 より前です。 専用ゲートウェイ経由で暗号化操作の OpenAPI を呼び出すには、KMS インスタンスのイメージバージョンが 3.0.0 以降である必要があります。

解決策

インスタンス管理 ページで、インスタンス詳細のイメージバージョンを表示します。 Upgrade をクリックして、KMS インスタンスのイメージバージョンをアップグレードします。 詳細については、「KMS インスタンスのイメージバージョンのアップグレード」をご参照ください。

サードパーティ ISV が専用ゲートウェイ経由で KMS にアクセスすると証明書検証の問題が発生する

自己署名証明書によって引き起こされる証明書検証の問題を解決するには、KMS インスタンスのパブリックネットワークアクセスを有効にします。 これにより、サードパーティ ISV は共有ゲートウェイ経由で KMS にアクセスでき、共有ゲートウェイは信頼された認証局から署名証明書を取得します。

  1. Key Management Service コンソールにログインします。 上部のメニューバーでリージョンを選択します。 左側のナビゲーションウィンドウで、リソース > インスタンス管理 を選択します。

  2. インスタンス一覧ページで、対象のインスタンス ID をクリックし、詳細ページの Share Resources タブでインターネットアクセスを有効にします。

    KMS インスタンスが複数の Alibaba Cloud アカウントと共有されている場合、各アカウントのインターネットアクセス権限を設定できます。image

  3. Instance タブに切り替えて、パブリックエンドポイントを表示します。image