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

Microservices Engine:構成の暗号化

最終更新日:Jun 22, 2026

Microservices Engine (MSE) のマイクロサービスレジストリにおける構成データは、プレーンテキストで保存されます。MSE は Key Management Service (KMS) と統合されており、データソース、トークン、ユーザー名、パスワードなどの構成データを暗号化および復号することができます。これにより、機密データの漏洩リスクを低減できます。

前提条件

重要
  • データセキュリティを確保するため、MSE は Alibaba Cloud KMS を使用してデータを暗号化および復号します。KMS には共有 KMS と専用 KMS があります。共有 KMS は現在提供を終了しています。詳細については、「[お知らせ] 共有 KMS の EOFS と EOS」をご参照ください。共有 KMS をご利用の場合、専用 KMS へのアップグレードを推奨します。2022 年 3 月 31 日以降に KMS を有効化した場合は、専用 KMS を購入する必要があります。詳細については、「[アップグレードのお知らせ] KMS は専用 KMS にアップグレードされます」をご参照ください。KMS の課金の詳細については、「KMS 1.0 の課金」をご参照ください。

  • このトピックでは、専用 KMS インスタンスを使用します。2022 年 3 月 31 日より前に共有 KMS を有効化した場合は、「よくある質問」をご参照ください。

暗号化構成の作成

MSE コンソールで暗号化構成を作成するには、次の手順を実行します。

  1. MSE コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、マイクロサービスの登録 > インスタンス を選択します。

  3. インスタンス ページで、インスタンスの名前をクリックします。

  4. 左側のナビゲーションウィンドウで、Configuration Management > Configurations を選択します。

  5. Configurations ページの左上隅にある 名前空間 ドロップダウンリストから名前空間を選択し、Add Configuration をクリックします。

  6. [Create Configuration] パネルで、[Data ID][Group] を入力します。次に、[Data Encryption] スイッチをオンにし、[KMS Key] を選択します。[KMS Key] を作成していない場合は、[Create] をクリックします。Key Management Service コンソールでキーを作成できます。キーを作成した後、[Create Configuration] パネルをリフレッシュすると、新しい KMS キーが表示されます。

    重要
    • 2022 年 3 月 31 日以降に専用 KMS を有効化した場合、暗号化に使用するキーの ID を選択し、そのキーを MSE Nacos インスタンスに関連付ける必要があります。これにより、以降のすべての構成がそのキーを使用して暗号化されます。

    • 2022 年 3 月 31 日より前に KMS を有効化した場合、専用 KMS インスタンスのキー ID をバインドするプロンプトは表示されず、共有 KMS を使用できます。アプリケーションが共有 KMS にアクセスするための構成方法は異なります。

    • 専用 KMS を使用するユーザーには、[KMS AES-256] が表示されます。共有 KMS を使用するユーザーには、バージョンの互換性を考慮して 3 つの暗号化方式が表示されます。[KMS] または [KMS AES-128] は選択しないことを推奨します。

      • KMS AES-256:KMS のエンベロープ暗号化および復号方式です。この方式では、暗号強度の高い 256 ビットキーを使用します。暗号化された構成内容のサイズは 50 KB を超えることはできません。プレーンテキストの構成データは KMS に送信されません。セキュリティを強化するために、このオプションを選択することを推奨します。ビジネス要件に基づいて暗号化方式を選択してください。

      • KMS AES-128:128 ビットキーを使用する暗号化方式で、中程度の暗号強度を持ちます。暗号化された構成内容のサイズは 50 KB を超えることはできません。

      • KMS:このオプションは選択しないことを推奨します。特殊文字が互換性の問題を引き起こす可能性があるためです。たとえば、アンパサンド (&) は \u0026 のようにエスケープされます。暗号化された構成内容のサイズは 6 KB を超えることはできません。

    • バインド後、キーを変更することはできません。キーを削除すると、暗号化構成にアクセスできなくなります。

  7. Configuration Format セクションでデータ形式を選択し、右側の Configuration Content エディターに構成内容を入力してから、Release をクリックします。

Nacos SDK for Java での暗号化構成の使用

  1. プロジェクトの pom.xml ファイルに次の依存関係を追加します。

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>{nacos-client-version}</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client-mse-extension</artifactId>
        <version>{nacos-client-mse-extension-version}</version>
    </dependency>

    バージョン説明

    Nacos クライアントのメジャーバージョン

    Nacos クライアントのバージョン

    推奨プラグインバージョン

    1.x

    V1.4.3 以降

    V1.0.6 以降

    2.x

    V2.1.1 以降

    V1.0.6 以降

    重要

    暗号化・復号プラグインのバージョンが Nacos クライアントのバージョンと一致しない場合、安定性の問題が発生する可能性があります。推奨バージョンを使用することを推奨します。

  2. 使用するフレームワークの種類に基づいて、構成する有効なコードを選択します。

    Nacos クライアントフレームワークの使用

    Nacos クライアントフレームワークを使用して構成を取得する場合、次のサンプルコードを構成する必要があります。

    try {
        Properties properties = new Properties();
        // ご利用の Nacos サーバーのアドレス。
        properties.put("serverAddr", "{serverAddr}");
        // ECS インスタンスの RAM ロールをアクセス認証情報として構成します。
        properties.put("ramRoleName", "{ramRoleName}");
        // KMS インスタンスのエンドポイント。
        properties.put("kmsEndpoint", "{kmsEndpoint}");
        ConfigService configService = NacosFactory.createConfigService(properties);
        System.out.println("content:::"+configService.getConfig("{dataId}", "{group}", 6000));
    } catch (Exception e) {
        e.printStackTrace();
    }

    kmsEndpoint は KMS インスタンスのエンドポイントを示します。アクセス環境と KMS インスタンスが同じ VPC 内にある場合、kmsEndpoint の値はインスタンスの VPC エンドポイントです。インターネット経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックエンドポイントまたはパブリックゲートウェイの VPC エンドポイントです。エンドポイントの取得方法の詳細については、「KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?」をご参照ください。

    AccessKey ペアを認証情報として使用して KMS インスタンスにアクセスする場合は、次の構成を置き換えます:

    properties.put("ramRoleName", "{ramRoleName}");

    次の構成を使用します:

    properties.put("accessKey", "{accessKey}"); 
    properties.put("secretKey", "{secretKey}");

    Nacos SDK for Java は、STS トークンや RAM ロールの Alibaba Cloud リソース名 (ARN) など、複数のアクセス認証情報を使用して暗号化構成を利用できます。サポートされているアクセス認証情報とクライアント構成方法の詳細については、「Nacos SDK for Java の構成暗号化でサポートされているアクセス認証情報」をご参照ください。

    2022 年 3 月 31 日以降に KMS を有効化し、SDK で暗号化構成をリリースする場合は、次のコードを追加します:

    properties.put("keyId", "{keyId}");

    コード内の serverAddr、ramRoleName、accessKey、secretKey、kmsEndpoint、dataId、group、および keyId パラメーターを、実際のサービスパラメーターに置き換えてください。

    Spring Cloud Nacos Config フレームワークの使用
    説明
    • Spring Cloud Alibaba 2022.x または 2023.x を使用している場合は、バージョンを 2023.0.1.2 にアップグレードしてください。

    • Spring Cloud Alibaba 2021.x を使用している場合は、バージョンを 2021.0.6.1 にアップグレードしてください。

    • Spring Cloud Alibaba 2.x を使用している場合は、バージョンを 2.2.10 にアップグレードしてください。

    • Spring Cloud Alibaba、Spring Cloud、および Spring Boot のバージョンに互換性があることを確認してください。バージョンの互換性の詳細については、Spring Cloud Alibaba 公式ウェブサイトのリリースノートをご参照ください。

    Spring Cloud Nacos Config フレームワークを使用して構成を取得する場合、次の構成を追加する必要があります。

    spring.cloud.nacos.config.server-addr={serverAddr}
    spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true
    # ECS インスタンスの RAM ロールをアクセス認証情報として使用します。
    spring.cloud.nacos.config.ramRoleName={ramRoleName}
    spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

    kmsEndpoint は KMS インスタンスのエンドポイントを示します。アクセス環境と KMS インスタンスが同じ VPC 内にある場合、kmsEndpoint の値はインスタンスの VPC エンドポイントです。インターネット経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックエンドポイントまたはパブリックゲートウェイの VPC エンドポイントです。エンドポイントの取得方法の詳細については、「KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?」をご参照ください。

    AccessKey ペアを認証情報として使用して KMS インスタンスにアクセスする場合は、次の構成を置き換えます:

    spring.cloud.nacos.config.ramRoleName={ramRoleName}

    次の構成を使用します:

    spring.cloud.nacos.config.accesskey={accessKey}
    spring.cloud.nacos.config.secretkey={secretKey}
    # AccessKey ペアを使用して Nacos にアクセスする場合、その機密性の高さから
    # JVM パラメーターまたは環境変数を使用して指定することを推奨します。
    # JVM パラメーター
    -Dspring.cloud.nacos.config.accessKey={accessKey}
    -Dspring.cloud.nacos.config.secretKey={secretKey}
    # 環境変数
    spring_cloud_nacos_config_accessKey={accessKey}
    spring_cloud_nacos_config_secretKey={secretKey}

    Nacos SDK for Java は、STS トークンや RAM ロールの Alibaba Cloud リソース名 (ARN) など、複数のアクセス認証情報を使用して暗号化構成を利用できます。サポートされているアクセス認証情報とクライアント構成方法の詳細については、「Nacos SDK for Java の構成暗号化でサポートされているアクセス認証情報」をご参照ください。

    2022 年 3 月 31 日以降に KMS を有効化し、SDK で暗号化構成をリリースする場合は、次のコードを追加します:

    spring.cloud.nacos.config.keyId={keyId}

    コード内の serverAddr、ramRoleName、accessKey、secretKey、kmsEndpoint、dataId、group、および keyId パラメーターを、実際のサービスパラメーターに置き換えてください。

    説明

    次の表にパラメーターを説明します。構成する値が有効であることを確認してください。

    パラメーター

    説明

    serverAddr

    ご利用の MSE インスタンスの IP アドレス。例:mse-*****.nacos-ans.mse.aliyuncs.com

    ramRoleName

    ECS インスタンスまたは ACK クラスターに割り当てられた RAM ロール。

    accessKey and secretKey

    現在の Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。

    accessKey と secretKey パラメーターを指定する必要があります。そうでない場合は、ramRoleName パラメーターを指定する必要があります。

    kmsEndpoint

    KMS インスタンスのエンドポイント。アクセス環境と KMS インスタンスが同じ VPC 内にある場合、kmsEndpoint の値はインスタンスの VPC エンドポイントです。インターネット経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックエンドポイントまたはパブリックゲートウェイの VPC エンドポイントです。エンドポイントの取得方法の詳細については、「KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?」をご参照ください。

    dataId

    暗号化構成のデータ ID。例:cipher-kms-aes-256-****.properties

    group

    暗号化構成のグループ名。

    keyId

    構成の暗号化に使用される KMS キーの ID。KMS コンソールで KMS キーを作成して使用できます。

    例:alia/*** または key-***

Nacos SDK for Go での暗号化構成の使用

  1. go get コマンドを実行して、Nacos client SDK for Go の依存関係をダウンロードします。

    go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8
  2. Nacos クライアントの初期設定を変更します。

    Nacos SDK for Go では、KMS インスタンスへのアクセス認証情報として AccessKey ペアのみが使用できます。コード内の serverAddr、accessKey、secretKey、および kmsEndpoint パラメーターをビジネスで使用するパラメーターに置き換え、構成の暗号化のために OpenKMS パラメーターが true に設定されていることを確認してください。

    sc := []constant.ServerConfig{
      {
        IpAddr: "{serverAddr}", // ご利用の MSE インスタンスのエンドポイントに置き換えます。
        Port:   8848,
      },
    }
    var accessKey = "{accessKey}" 
    var secretKey = "{secretKey}" 
    cc := constant.ClientConfig{
      NamespaceId:         "public", // 名前空間 ID。
      OpenKMS:              true, // 構成の暗号化のために KMS を有効にします。
      AccessKey:            accessKey, 
      SecretKey:            secretKey,
      KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
      TimeoutMs:           5000,
      NotLoadCacheAtStart: true,
      LogDir:              "/tmp/nacos/log",
      CacheDir:            "/tmp/nacos/cache",
      RotateTime:          "1h",
      MaxAge:              3,
    }

    kmsEndpoint は KMS インスタンスのエンドポイントを示します。アクセス環境と KMS インスタンスが同じ VPC 内にある場合、kmsEndpoint の値はインスタンスの VPC エンドポイントです。インターネット経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックエンドポイントまたはパブリックゲートウェイの VPC エンドポイントです。エンドポイントの取得方法の詳細については、「KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?」をご参照ください。

  3. 暗号化構成の公開

    keyId:構成の暗号化に使用される KMS キーの ID。

    configParam := vo.ConfigParam{
        DataId:   "{dataId}",
        Group:    "{group}",
        Content:  "content",
        KmsKeyId: "{keyId}",  // 暗号化用の KMS キーの ID。KMS コンソールでキーを作成して使用できます。
    }
    published, err := client.PublishConfig(configParam)
    if published && err == nil {
    	fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content)
    } else {
      fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n",
        configParam.Group, configParam.DataId, configParam.Content, err)
    }
パラメーター

次の表にパラメーターを説明します。構成する値が有効であることを確認してください。

パラメーター

説明

serverAddr

ご利用の MSE インスタンスの IP アドレス。例:mse-*****.nacos-ans.mse.aliyuncs.com

accessKey and secretKey

RAM ユーザーの AccessKey ID と AccessKey Secret。

kmsEndpoint

KMS インスタンスのエンドポイント。アクセス環境と KMS インスタンスが同じ VPC 内にある場合、kmsEndpoint の値はインスタンスの VPC エンドポイントです。インターネット経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックエンドポイントまたはパブリックゲートウェイの VPC エンドポイントです。エンドポイントの取得方法の詳細については、「KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?」をご参照ください。

dataId

暗号化構成のデータ ID。例:cipher-kms-aes-256-****.properties

group

暗号化構成のグループ名。

keyId

構成の暗号化に使用される KMS キーの ID。KMS コンソールで KMS キーを作成して使用できます。

例:alia/*** または key-***

Nacos SDK for Java の構成暗号化でサポートされているアクセス認証情報

Nacos SDK for Java は、構成を暗号化するために複数のアクセス認証情報をサポートしています。ビジネスシナリオの認証および権限付与の要件に基づいて、認証情報プロバイダーを初期化する方法を選択できます。

サポートされているアクセス認証情報:

クライアントでアクセス認証情報を構成する方法の詳細については、「Nacos クライアントによるアクセス認証」の「クライアントでのアクセス認証情報の設定」セクションをご参照ください。次のシステムポリシーを選択して、アクセス認証情報に関連する権限を付与します。これにより、粗粒度の権限付与操作が実行され、すべての KMS インスタンスに対する読み取りおよび書き込み権限が付与されます。

ポリシー

AliyunKMSFullAccess

KMS の管理に必要な権限です。このポリシーがアタッチされた RAM ロールを使用して、Alibaba Cloud アカウントで KMS を管理するのと同じように、すべての機能を管理できます。

よくある質問

2022 年 3 月 31 日より前に有効化された共有 KMS を使用する場合、パラメーターをどのように構成しますか?

2022 年 3 月 31 日より前に共有 KMS を有効化した場合、kmsEndpoint パラメーターを kmsRegionId に置き換えるだけで済みます。kmsRegionId は、KMS インスタンスが存在するリージョン (例: cn-hangzhou) を示します。使用するフレームワークに基づいてクライアント構成を変更するには、次の手順を実行します。

Nacos クライアント SDK for Java での暗号化構成の使用

コード内の次の構成を置き換えます:

properties.put("kmsEndpoint", "{kmsEndpoint}");

次の構成を使用します:

properties.put("kms_region_id", "{kmsRegionId}");

Nacos SDK for Java の Spring Cloud Nacos Config フレームワークを使用した暗号化構成の使用

コード内の次の構成を置き換えます:

spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

次の構成を使用します:

spring.cloud.nacos.config.kms_region_id={kmsRegionId}

Nacos SDK for Go での暗号化構成の使用

ClientConfig に RegionId パラメーターを追加します。コード内の次の構成を置き換えます:

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:               3,
}

次の構成を使用します:

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:                3,
  RegionId:             "{kmsRegionId}",	
}

KMS インスタンスのエンドポイントを取得するにはどうすればよいですか?

  • ご利用のアクセス環境と KMS インスタンスが同じ VPC 内にある場合、`kmsEndpoint` をインスタンスの VPC エンドポイントに設定します。KMS コンソールで、[インスタンス管理] ページに移動し、ターゲットインスタンスをクリックして詳細を表示し、[基本情報] セクションからインスタンスの VPC エンドポイントを取得します。

  • インターネット経由で KMS インスタンスにアクセスする場合は、KMS インスタンスの詳細ページで [インターネットアクセスステータス] スイッチをオンにする必要があります。

    パブリックアクセスが有効になると、パブリックゲートウェイのパブリックエンドポイントは `kms.cn-hangzhou.aliyuncs.com` となり、パブリックゲートウェイの VPC エンドポイントは `kms-vpc.cn-hangzhou.aliyuncs.com` となります。パブリックアクセスには KMS SDK が必要で、対称暗号化および復号のパフォーマンス制限は毎秒 750 操作です。セキュリティを強化するために、きめ細かいアクセス制御ポリシーを構成することを推奨します。

  • VPC 経由で KMS インスタンスにアクセスする場合、kmsEndpoint の値はパブリックゲートウェイの VPC エンドポイントです。

よくある質問

一般的なエラーのトラブルシューティング

次のステップを実行してください:

  • アプリケーション実行環境が、MSE インスタンスが存在する VPC と KMS インスタンスが存在する VPC に接続できるかどうかを確認します。

    説明

    MSE インスタンスと KMS インスタンス間の接続性を確保する必要はありません。

  • KMS V1.0 または V3.0 が使用されているかを確認します。KMS V1.0 を使用している場合は、KMS が 2022 年 3 月 31 日より前に有効化されていることを確認する必要があります。

    説明

    2022 年 3 月 31 日以降に KMS を有効化した場合、専用 KMS を購入する必要があります。KMS V1.0 の暗号化機能は、新規ユーザーには提供されなくなりました。

  • Nacos クライアントのバージョンが暗号化・復号プラグインのバージョンと一致しているかを確認します。詳細については、このトピックのバージョン説明をご参照ください。

Nacos SDK for Java の問題のトラブルシューティング

Nacos ログの例外スタックのキーワード

原因

keyId is not set up yet

初期化パラメーター keyId が空または指定されていません。

Forbidden.KeyNotFound : The specified Key is not found.

初期化パラメーター keyId で指定されたキー ID が KMS インスタンスに存在しません。

kmsEndpoint is empty

初期化パラメーター kmsEndpoint が空です。

test-kst-xxxx.cryptoservice.kms.aliyuncs.com: unknown name or service

初期化パラメーター kmsEndpoint で指定されたエンドポイントにアクセスできません。

kmsPasswordKey is empty

初期化パラメーター kmsPasswordKey が空です。

keystore password was incorrect

初期化パラメーター kmsPasswordKey の値が無効です。

SDK.ServerUnreachable : Server unreachable: connection https://kst-xxx.cryptoservice.kms.aliyuncs.com

初期化パラメーター kmsVersionv3.0 に設定されていません。

None of the TrustManagers trust this certificate chain

  1. 初期化パラメーター kmsVersionv3.0 に設定されていません。

  2. 初期化パラメーター kmsCaFilePath が空です。

kmsClientKeyFilePath is empty

初期化パラメーター kmsClientKeyFilePath が空です。

unable to find valid certification path to requested target

初期化パラメーター kmsCaFilePath で指定されたファイルが見つかりません。

参考