Microservices Engine (MSE) 上の Nacos インスタンスに対して認証機能を有効にできます。認証機能は、悪意のあるユーザーが MSE Nacos インスタンスに関する情報を取得または変更することを防ぐのに役立ちます。このトピックでは、MSE コンソールで Nacos インスタンスのアクセス認証を設定する方法と、Nacos クライアントを使用して Nacos インスタンスに承認済みアクセスを実行する方法について説明します。
前提条件
MSE が有効化されていること。有効化されていない場合は、MSE 製品ページに移動して有効化してください。
MSE Nacos インスタンスが作成されていること。詳細については、「Nacos エンジンの作成」をご参照ください。
アクセス方法
このトピックでは、エンジンの直接接続を使用する場合のアクセス認証の設定方法について説明します。権限付与が成功すると、Nacos クライアントを使用して、RAM ユーザーとして、または RAM ロールを使用して MSE Nacos インスタンスにアクセスできます。次のアクセス方法がサポートされています。
エンジンの直接接続:SDK またはクライアントを使用して Nacos エンジンに直接アクセスできます。このアクセス方法は、アプリケーションが Nacos エンジンにアクセスしようとするシナリオに適しています。
コンソールベースのエンジン接続:MSE コンソールで Nacos エンジンを管理、表示、および O&M を実行できます。このアクセス方法は、Nacos エンジンを使用したいすべてのユーザーに適しています。RAM ユーザーに MSE コンソールの使用を許可する方法の詳細については、「マイクロサービスレジストリリソースに対する権限の付与」をご参照ください。
認証の有効化
新しく作成された Nacos エンジンでは、認証はデフォルトで有効になっていません。この場合、Nacos エンジンはすべてのリクエストに応答します。
オープンソースの Nacos コンソールのログイン機能は、ユーザーに関する情報を記録するためにのみ使用され、リクエストを認証またはインターセプトすることはできません。このトピックの手順に従って認証機能を有効にできます。Nacos インスタンスの認証機能を有効にすると、オープンソースの Nacos コンソールでインスタンスにアクセスできなくなります。MSE コンソールでインスタンスにアクセスする必要があります。
MSE コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションウィンドウで、[マイクロサービスの登録] > [インスタンス] を選択します。
[インスタンス] ページで、インスタンスの名前をクリックします。
基本情報ページの左側のナビゲーションウィンドウで、[パラメーター設定] をクリックします。表示されたページで、[編集] をクリックします。
[ConfigAuthEnabled] または [NamingAuthEnabled] パラメーターを [はい] に設定し、[保存してインスタンスを再起動] をクリックします。
重要設定センターまたはレジストリの認証機能を有効にする前に、クライアントでアクセス認証情報を設定する必要があります。そうしないと、構成やサービスを取得できません。アクセス認証情報の設定方法の詳細については、このトピックの「クライアントでのアクセス認証情報の設定」をご参照ください。
2 つのパラメーターは互いに独立しています。
パラメーター
説明
ConfigAuthEnabled
設定センターの認証機能を有効にするかどうかを指定します。このパラメーターは、Basic Edition のバージョン 1.2.1 以降、および Professional Edition と Developer Edition のすべてのバージョンの MSE Nacos インスタンスでサポートされています。
NamingAuthEnabled
レジストリの認証機能を有効にするかどうかを指定します。このパラメーターは、Professional Edition または Developer Edition のバージョン 2.0.4 以降の MSE Nacos インスタンスでサポートされています。
クライアントでのアクセス認証情報の設定
MSE Nacos インスタンスは、認証情報プロバイダーを初期化するための複数の方法をサポートしています。ビジネスシナリオの認証と権限付与の要件に基づいて方法を選択できます。
初期化方法 | シナリオ | AccessKey ペアまたは STS トークンが必要か | 基盤となる認証情報 | 認証情報の有効期間 | 認証情報のローテーションまたはリフレッシュ方法 |
アプリケーションは Elastic Compute Service (ECS) インスタンス、Elastic Container Instance、Container Service for Kubernetes (ACK) ワーカーノードにデプロイおよび実行されます。 | いいえ | STS トークン | 一時的 | 自動リフレッシュ | |
信頼できないアプリケーションが ACK ワーカーノードにデプロイおよび実行されます。 | いいえ | STS トークン | 一時的 | 自動リフレッシュ | |
アプリケーションは信頼できない環境にデプロイおよび実行され、その場合、認証情報の有効期間と権限を管理したいと考えています。 | はい | STS トークン | 一時的 | 手動リフレッシュ | |
アプリケーションは外部システムからのアクセス認証情報を必要とします。 | いいえ | STS トークン | 一時的 | 自動リフレッシュ | |
アプリケーションはクラウドサービスへのアクセスを承認される必要があります。たとえば、この方法を使用して、アカウント間のクラウドサービスへのアクセスを許可できます。 | はい | STS トークン | 一時的 | 自動リフレッシュ | |
アプリケーションは、外部からの攻撃に対して脆弱でなく、頻繁な認証情報のローテーションなしで長期間クラウドサービスにアクセスする必要がある、安全で安定した環境にデプロイおよび実行されます。 | はい | AK | 長期的 | 手動ローテーション | |
アプリケーションは、AccessKey ペアが漏洩する可能性のある環境にデプロイおよび実行され、長期間クラウドサービスにアクセスするためにアクセス認証情報を頻繁にローテーションする必要があります。 | いいえ | AK | 長期的 | 自動ローテーション |
方法1:ECS インスタンスの RAM ロールの使用
RAM ロールを ECS インスタンスまたは ACK クラスターに関連付け、Nacos クライアントに RAM ロール名を通知できます。これにより、アプリケーションは AccessKey ペアを指定しなくても MSE Nacos インスタンスにアクセスできます。インスタンスに RAM ロールとポリシーを設定して、RAM ロールのアクセス権限の粒度や範囲を制御できます。詳細については、「概要」、「RAM と RBAC を使用したアクセスの制御の実装」、および「RAM ロールの概要」をご参照ください。
ステップ1:RAM ロールの作成とポリシーのアタッチ
MSE Nacos インスタンスにアクセスできるロールを ECS インスタンスに付与する
任意。信頼できるエンティティが Alibaba Cloud サービスである RAM ロールを作成します。詳細については、「信頼できる Alibaba Cloud サービス用の RAM ロールの作成」をご参照ください。
既存の RAM ロールまたは作成した RAM ロールに権限を付与し、次のいずれかのシステムポリシーを RAM ロールにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ロールにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ロールへの権限の付与」をご参照ください。
ポリシー
説明
AliyunMSEFullAccess
MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。
AliyunMSEReadOnlyAccess
MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。
説明一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ECS コンソールにログインします。左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。
上部のナビゲーションバーで、対象のリソースが存在するリソースグループとリージョンを選択します。

目的の ECS インスタンスを見つけ、
> [インスタンス設定] > [RAM ロールのアタッチ/デタッチ] を選択します。[RAM ロールのアタッチ/デタッチ] ダイアログボックスで、[RAM ロール] ドロップダウンリストから作成したインスタンス RAM ロールを選択し、[確認] をクリックします。
ACK クラスターのワーカー RAM ロールに権限を付与する
ACK クラスターを作成すると、ワーカー RAM ロールが自動的に作成されます。したがって、再度 RAM ロールを作成する必要はありません。
カスタムポリシーを作成します。詳細については、「カスタムポリシーの作成」をご参照ください。
ワーカー RAM ロールに MSE の管理権限を付与します。
{ "Action": "mse:*", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "mse.aliyuncs.com" } } }ワーカー RAM ロールに MSE の読み取り専用権限を付与します。
{ "Action": [ "mse:Query*", "mse:List*", "mse:Get*" ], "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "mse.aliyuncs.com" } } }
説明詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
カスタムポリシーをクラスターのワーカー RAM ロールにアタッチします。詳細については、「ワーカー RAM ロールへの権限の付与」をご参照ください。
ステップ2:クライアント (SDK) で認証を設定
Nacos クライアント (Java 用 SDK)
Nacos クライアントに Java 用 SDK を使用する場合、アプリケーションのコードに次の構成を追加します。
RAM ロールを認証に使用するには、クライアントを必要なバージョンにアップグレードする必要があります。詳細については、「Nacos クライアントによるサービス認証と暗号化・復号のサポート」をご参照ください。
properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
properties.put(PropertyKeyConst.RAM_ROLE_NAME, "${roleName}");
// レジストリ
NamingService naming = NamingFactory.createNamingService(properties);
// 設定センター
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
## レジストリ
spring.cloud.nacos.discovery.ramRoleName=${roleName}
## 設定センター
spring.cloud.nacos.config.ramRoleName=${roleName}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?ramRoleName=${roleName}方法2:OIDC ロールの ARN の使用
方法1で説明されているように、ACK クラスターのワーカーノードに RAM ロールをアタッチした後、ワーカーノード上の Pod 内のアプリケーションは、ECS インスタンス上のアプリケーションと同じ方法でメタデータサーバーを使用して STS トークンを取得できます。ただし、アプリケーションコードを公開していない顧客から提出されたアプリケーションなど、信頼できないアプリケーションがメタデータサーバーにアクセスして、ワーカーノードにアタッチされた RAM ロールの STS トークンを取得することを望まない場合があります。
クラウドリソースのセキュリティを確保し、信頼できないアプリケーションが必要な STS トークンを安全に取得できるようにし、アプリケーションレベルの権限を最小限に抑えるために、RAM Roles for Service Account (RRSA) 機能を使用できます。この方法の基本的なロジックは、STS トークンを使用してサービスにアクセスすることです。ACK クラスターは、さまざまなアプリケーション Pod のアカウントの OpenID Connect (OIDC) トークンファイルを作成してマウントし、関連する構成情報を環境変数に渡します。Nacos クライアントは、環境変数の構成情報を取得し、STS の `AssumeRoleWithOIDC` 操作を呼び出して、アタッチされたロールの STS トークンを取得します。この方法により、AccessKey ペアまたは STS トークンを手動でメンテナンスする際に発生する可能性のあるリスクが排除されます。
ステップ1:ACK クラスターの RRSA 機能を有効にする
ACK クラスターの RRSA 機能を有効にする方法の詳細については、「RRSA を使用して異なる Pod が異なるクラウドサービスにアクセスすることを承認する」をご参照ください。
ステップ2:RAM ロールに権限を付与する
ステップ1の RAM ロール (たとえば、「RRSA を使用して異なる Pod が異なるクラウドサービスにアクセスすることを承認する」の demo-role-for-rrsa ロール) に MSE Nacos インスタンスへのアクセス権限を付与し、次のいずれかのシステムポリシーを RAM ロールにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ロールにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ロールへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:Nacos クライアント (SDK) で認証を設定する
この方法では、RoleSessionName のみを設定する必要があります。その他の一時的な認証情報は、ACK クラスターの RRSA 機能によって渡される環境変数に基づいて提供されます。
Nacos クライアント (Java 用 SDK)
Nacos クライアントに Java 用 SDK を使用する場合、アプリケーションのコードに次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${ロールを偽装するためのセッションのカスタム名}");
## 以下のパラメーターは任意です。
# 代わりに環境変数 ALIBABA_CLOUD_POLICY を設定できます。
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${限定された権限を持つポリシーを設定}");
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${ロール偽装の有効期間。単位:秒}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、必要な依存関係を追加し、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>## レジストリ
spring.cloud.nacos.discovery.server-addr=${Nacos サーバーのエンドポイント}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 設定センター
spring.cloud.nacos.config.server-addr==${Nacos サーバーのエンドポイント}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 以下のパラメーターは任意です。
# 代わりに環境変数 ALIBABA_CLOUD_POLICY を設定できます。
spring.cloud.nacos.discovery.alibabaCloudPolicy=${限定された権限を持つポリシーを設定}
spring.cloud.nacos.config.alibabaCloudPolicy=${限定された権限を持つポリシーを設定}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、必要な依存関係を追加し、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency># 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 以下のパラメーターは任意で、URL の後に追加されます。代わりに環境変数 ALIBABA_CLOUD_POLICY と ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
&alibabaCloudPolicy=${限定された権限を持つポリシーを設定}&alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}方法3:STS トークンの使用
アプリケーションが一時的に MSE Nacos インスタンスにアクセスする必要がある場合、Security Token Service (STS) を使用して一時的なアクセス認証情報を取得し、その認証情報を使用して認証情報プロバイダーを初期化できます。一時的なアクセス認証情報は、AccessKey ID、AccessKey Secret、および STS トークンで構成されます。
この方法では、STS トークンを手動でメンテナンスする必要があります。これにより、安定性のリスクが生じ、メンテナンスの複雑さが増します。MSE Nacos インスタンスに複数回アクセスする場合は、STS トークンを手動でリフレッシュする必要があります。
(任意) ステップ1:RAM ユーザーと RAM ロールの作成
RAM ユーザーがいない場合、または RAM ユーザーを作成する必要がある場合は、このステップを実行します。RAM ユーザーの作成方法の詳細については、「RAM ユーザーの作成」をご参照ください。
RAM ロールがない場合、または信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールを作成する必要がある場合は、このステップを実行します。詳細については、「信頼できる Alibaba Cloud アカウント用の RAM ロールの作成」をご参照ください。
ステップ2:RAM ユーザーと RAM ロールに権限を付与する
ステップ1で作成した RAM ユーザーに STS トークンを管理する権限を付与します。詳細については、「AssumeRole」をご参照ください。
ステップ1の RAM ロールに権限を付与し、次のいずれかのシステムポリシーを RAM ロールにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ロールにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ロールへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:STS トークンの取得
ステップ1で作成した RAM ロールの一時的なアクセス認証情報として使用される STS トークンを取得する必要があります。STS トークンの取得方法の詳細については、「AssumeRole」をご参照ください。
ステップ4:Nacos クライアント (SDK) で認証を設定する
一時的なアクセス認証情報は、AccessKey ID、AccessKey Secret、および STS トークンで構成されます。これらは一緒に使用する必要があります。
Nacos クライアント (Java 用 SDK)
Nacos クライアント (Java 用 SDK) を使用する場合、必要な依存関係を追加し、アプリケーションに次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${一時的な認証情報の AccessKey ID}");
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${一時的な認証情報の AccessKey Secret}");
# 代わりに環境変数 ALIBABA_CLOUD_SECURITY_TOKEN を設定できます。
properties.put(ExtensionAuthPropertyKey.SECURITY_TOKEN_KEY.getKey(), "${一時的な認証情報のセキュリティトークン}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、必要な依存関係を追加し、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>## レジストリ
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${一時的な認証情報の AccessKey ID}
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${一時的な認証情報の AccessKey Secret}
# 代わりに環境変数 ALIBABA_CLOUD_SECURITY_TOKEN を設定できます。
spring.cloud.nacos.discovery.alibabaCloudSecurityToken=${一時的な認証情報のセキュリティトークン}
## 設定センター
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${一時的な認証情報の AccessKey ID}
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${一時的な認証情報の AccessKey Secret}
# 代わりに環境変数 ALIBABA_CLOUD_SECURITY_TOKEN を設定できます。
spring.cloud.nacos.config.alibabaCloudSecurityToken=${一時的な認証情報のセキュリティトークン}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、必要な依存関係を追加し、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency># 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET、および ALIBABA_CLOUD_SECURITY_TOKEN を設定できます。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?alibabaCloudAccessKeyId=${一時的な認証情報の AccessKey ID}&alibabaCloudAccessKeySecret=${一時的な認証情報の AccessKey Secret}&alibabaCloudSecurityToken=${一時的な認証情報のセキュリティトークン}方法4:認証情報 URI の使用
アプリケーションが外部システムから Alibaba Cloud の認証情報を取得して、柔軟な認証情報管理とキーレスアクセスを実装する必要がある場合、認証情報 URI を使用して認証情報プロバイダーを初期化できます。この方法の基本的なロジックは、STS トークンを使用してサービスにアクセスすることです。Nacos クライアントは、指定した URI を使用して STS トークンを取得し、そのトークンを使用して認証情報クライアントを初期化します。この方法により、AccessKey ペアまたは STS トークンを手動でメンテナンスする際に発生する可能性のあるリスクが排除されます。
認証情報 URI 応答を提供するバックエンドサービスは、アプリケーションが常に有効な認証情報を取得できるように、STS トークンを自動的にリフレッシュする必要があります。
ステップ1:認証情報 URI サービスからの応答が有効であることを確認する
Nacos クライアントが STS トークンを正しく解析して使用できるようにするには、認証情報 URI が次の応答プロトコルに準拠している必要があります:
応答状態コード:200
応答本文の構造:
{ "Code": "Success", "AccessKeySecret": "AccessKeySecret", "AccessKeyId": "AccessKeyId", "Expiration": "2021-09-26T03:46:38Z", "SecurityToken": "SecurityToken" }
ステップ2:RAM ロールに権限を付与する
ステップ1の RAM ロールに MSE Nacos インスタンスへのアクセス権限を付与し、次のいずれかのシステムポリシーを RAM ロールにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ロールにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ロールへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:Nacos クライアント (SDK) で認証を設定する
Nacos クライアント (Java 用 SDK)
Nacos クライアント (Java 用 SDK) を使用する場合、必要な依存関係を追加し、アプリケーションに次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
# 代わりに環境変数 ALIBABA_CLOUD_CREDENTIALS_URI を設定できます。
properties.put(ExtensionAuthPropertyKey.CREDENTIALS_URI.getKey(), "${認証情報サービスの URI、例:https://$host:$port/$path....");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、必要な依存関係を追加し、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>## レジストリ
# 代わりに環境変数 ALIBABA_CLOUD_CREDENTIALS_URI を設定できます。
spring.cloud.nacos.discovery.alibabaCloudCredentialsUri=${認証情報サービスの URI、例:https://$host:$port/$path....}
## 設定センター
# 代わりに環境変数 ALIBABA_CLOUD_CREDENTIALS_URI を設定できます。
spring.cloud.nacos.config.alibabaCloudCredentialsUri=${認証情報サービスの URI、例:https://$host:$port/$path....}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、必要な依存関係を追加し、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency># 代わりに環境変数 ALIBABA_CLOUD_CREDENTIALS_URI を設定できます。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?alibabaCloudCredentialsUri=${認証情報 URI、例:https://$host:$port/$path....}方法5:RAM ロールの ARN の使用
この方法は、アプリケーションに MSE Nacos インスタンスへのアクセスを承認する必要があるシナリオに適しています。たとえば、Alibaba Cloud アカウント間で MSE Nacos インスタンスにアクセスしたい場合、RAM ロールの Alibaba Cloud リソース名 (ARN) を使用して認証情報プロバイダーを初期化できます。この方法の基本的なロジックは、STS トークンを使用してサービスにアクセスすることです。指定された RAM ロールの ARN を使用して、Nacos クライアントは STS から STS トークンを取得し、セッションが期限切れになる前に STS トークンを自動的にリフレッシュします。policy パラメーターに値を割り当てて、RAM ロールの権限を制限できます。
この方法では、ロールを偽装するために使用できる AccessKey ペアが必要です。AccessKey ペアにロールを偽装する権限を付与し、AccessKey ペアが偽装できるロールを制限することを推奨します。詳細については、「AssumeRole」をご参照ください。
(任意) ステップ1:RAM ユーザーと RAM ロールの作成
RAM ユーザーがいない場合、または RAM ユーザーを作成する必要がある場合は、このステップを実行します。RAM ユーザーの作成方法の詳細については、「RAM ユーザーの作成」をご参照ください。
RAM ロールがない場合、または信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールを作成する必要がある場合は、このステップを実行します。詳細については、「信頼できる Alibaba Cloud アカウント用の RAM ロールの作成」をご参照ください。
ステップ2:RAM ユーザーと RAM ロールに権限を付与する
ステップ1で作成した RAM ユーザーに STS トークンを管理する権限を付与します。詳細については、「AssumeRole」をご参照ください。
ステップ1の RAM ロールに権限を付与し、次のいずれかのシステムポリシーを RAM ロールにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ロールにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ロールへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:Nacos クライアント (SDK) で認証を設定する
この方法を使用するには、AccessKey ペアと RAM ロールの ARN を認証情報として設定する必要があります。
Nacos クライアント (Java 用 SDK)
Nacos クライアント (Java 用 SDK) を使用する場合、必要な依存関係を追加し、アプリケーションに次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${ロールを偽装できる AccessKey ID}");
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${ロールを偽装できる AccessKey Secret}");
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_ARN を設定できます。
properties.put(ExtensionAuthPropertyKey.ROLE_ARN.getKey(), "${偽装されるロールの ARN}");
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${ロールを偽装するためのセッションのカスタム名}");
## 以下のパラメーターは任意です。
# 代わりに環境変数 ALIBABA_CLOUD_POLICY を設定できます。
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${限定された権限を持つポリシーを設定}");
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${ロール偽装の有効期間。単位:秒}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、必要な依存関係を追加し、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>## レジストリ
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${ロールを偽装できる AccessKey ID}
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${ロールを偽装できる AccessKey Secret}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_ARN を設定できます。
spring.cloud.nacos.discovery.alibabaCloudRoleArn=${偽装されるロールの ARN}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 設定センター
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID を設定できます。
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${ロールを偽装できる AccessKey ID}
# 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定できます。
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${ロールを偽装できる AccessKey Secret}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_ARN を設定できます。
spring.cloud.nacos.config.alibabaCloudRoleArn=${偽装されるロールの ARN}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 以下のパラメーターは任意です。
# 代わりに環境変数 ALIBABA_CLOUD_POLICY を設定できます。
spring.cloud.nacos.discovery.alibabaCloudPolicy=${限定された権限を持つポリシーを設定}
spring.cloud.nacos.config.alibabaCloudPolicy=${限定された権限を持つポリシーを設定}
# 代わりに環境変数 ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、必要な依存関係を追加し、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency># 代わりに環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET、ALIBABA_CLOUD_ROLE_ARN、および ALIBABA_CLOUD_ROLE_SESSION_NAME を設定できます。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?alibabaCloudAccessKeyId=${ロールを偽装できる AccessKey ID}&alibabaCloudAccessKeySecret=${ロールを偽装できる AccessKey Secret}&alibabaCloudRoleArn=${偽装されるロールの ARN}&alibabaCloudRoleSessionName=${ロールを偽装するためのセッションのカスタム名}
## 以下のパラメーターは任意で、URL の後に追加されます。代わりに環境変数 ALIBABA_CLOUD_POLICY と ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION を設定できます。
&alibabaCloudPolicy=${限定された権限を持つポリシーを設定}&alibabaCloudRoleSessionExpiration=${ロール偽装の有効期間。単位:秒}方法6:AccessKey ペアの使用
(任意) ステップ1:RAM ユーザーの作成
RAM ユーザーがいない場合、または RAM ユーザーを作成する必要がある場合は、このステップを実行します。詳細については、「RAM ユーザーの作成」をご参照ください。
ステップ2:RAM ユーザーに権限を付与する
ステップ1で作成した RAM ユーザーに権限を付与し、次のいずれかのシステムポリシーを RAM ユーザーにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ユーザーにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ユーザーへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:Nacos クライアント (SDK) で認証を設定する
AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。MSE Nacos インスタンスの認証機能を有効にした後、Nacos クライアントを使用して RAM ユーザーとして Nacos インスタンスにアクセスする場合は、RAM ユーザーの AccessKey ID と AccessKey Secret を指定する必要があります。Nacos クライアントに RAM ユーザーの AccessKey ID と AccessKey Secret を指定しない場合、RAM ユーザーとして Nacos インスタンスにアクセスすることはできません。AccessKey ペアの取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。
Nacos クライアント (Java 用 SDK)
Nacos クライアント (Java 用 SDK) を使用する場合、アプリケーションに次のコードを追加します。
AccessKey ペアを認証に使用するには、クライアントを必要なバージョンにアップグレードする必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
properties.put(PropertyKeyConst.ACCESS_KEY, "${accessKey}");
properties.put(PropertyKeyConst.SECRET_KEY, "${secretKey}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.1.RELEASE 以降にアップグレードする必要があります。
## レジストリ
spring.cloud.nacos.discovery.accessKey=${accessKey}
spring.cloud.nacos.discovery.secretKey=${secretKey}
## 設定センター
spring.cloud.nacos.config.accessKey=${accessKey}
spring.cloud.nacos.config.secretKey=${secretKey}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?accessKey=${accessKey}&secretKey=${secretKey}Nacos クライアント (Go 用 SDK)
Nacos クライアント (Go 用 SDK) を使用する場合、アプリケーションのコードに次の構成を追加します。
AccessKey ペアを認証に使用するには、クライアントを必要なバージョンにアップグレードする必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
cc := constant.ClientConfig{
AccessKey: "${accessKey}",
SecretKey: "${secretKey}"
}
serverConfigs := []constant.ServerConfig{
{
IpAddr: "${MSE Nacos インスタンスのエンドポイント}",
Port: 8848
}
}
namingClient, err := clients.NewNamingClient(
vo.NacosClientParam{
ClientConfig: &clientConfig,
ServerConfigs: serverConfigs,
},
)
configClient, err := clients.NewConfigClient(
vo.NacosClientParam{
ClientConfig: &clientConfig,
ServerConfigs: serverConfigs,
},
)Nacos クライアント (Python 用 SDK)
Nacos クライアント (Python 用 SDK) を使用する場合、アプリケーションのコードに次の構成を追加します。
AccessKey ペアを認証に使用するには、クライアントを必要なバージョンにアップグレードする必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
client = nacos.NacosClient(${MSE Nacos インスタンスのエンドポイント}, ak=${accessKey}, sk=${secretKey})方法7:自動的にローテーションする AccessKey ペアの使用
アプリケーションが長期間 MSE Nacos インスタンスにアクセスする必要があるが、実行時環境で AccessKey ペアが漏洩する可能性がある場合、AccessKey ペアを頻繁に手動でローテーションする必要があります。この場合、クライアントキーを使用して認証情報プロバイダーを初期化できます。この方法の基本的なロジックは、AccessKey ペアを使用してサービスにアクセスすることです。クライアントキーを使用した後、Key Management Service (KMS) は管理対象 RAM ユーザーの AccessKey ペアを定期的にローテーションし、RAM ユーザーの静的な AccessKey ペアを動的に変更します。これにより、AccessKey ペアの漏洩リスクが軽減されます。KMS は、漏洩した AccessKey ペアを迅速に置き換えるための即時ローテーションもサポートしています。これにより、AccessKey ペアを手動でメンテナンスする必要がなくなり、セキュリティリスクとメンテナンスの複雑さが軽減されます。クライアントキーの取得方法の詳細については、「AAP の作成」をご参照ください。
ステップ1:KMS の RAM シークレットを使用して RAM ユーザーを管理する
KMS インスタンスの RAM シークレットを使用して RAM ユーザーを管理する必要があります。KMS で RAM シークレットを管理する方法の詳細については、「RAM シークレットの管理と使用」をご参照ください。
ステップ2:RAM ユーザーに権限を付与する
ステップ1で作成した RAM ユーザーに権限を付与し、次のいずれかのシステムポリシーを RAM ユーザーにアタッチします。このステップでは、粗粒度の権限付与操作が実行され、RAM ユーザーにすべての MSE Nacos インスタンスの構成とサービスに対する読み取り権限と書き込み権限、または読み取り専用権限が付与されます。権限付与操作の実行方法については、「RAM ユーザーへの権限の付与」をご参照ください。
ポリシー | 説明 |
AliyunMSEFullAccess | MSE の管理に必要な権限。このポリシーがアタッチされた RAM ユーザーを使用して、Alibaba Cloud アカウントを使用してすべての機能を管理するのと同じ方法ですべての機能を管理できます。 |
AliyunMSEReadOnlyAccess | MSE のリソースに対する読み取り専用権限。このポリシーがアタッチされた RAM ユーザーは、Alibaba Cloud アカウントのすべての MSE リソースを読み取ることしかできません。 |
一度に最大 5 つのポリシーをアタッチできます。5 つ以上のポリシーをアタッチする場合は、このステップを複数回繰り返してください。
詳細な権限を付与する場合は、カスタムポリシーを作成する必要があります。詳細については、「レジストリでの詳細な認証」、「設定センターでの詳細な認証」、および「マイクロサービスレジストリの一般的なカスタムポリシーの例」をご参照ください。
ステップ3:認証情報管理構成ファイルの作成
プロジェクトのルートディレクトリまたは classpath に構成ファイルを作成します。構成ファイル名は secretsmanager.properties である必要があります。ファイルには次の内容が含まれます:
cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]構成ファイル内の設定項目に関する詳細については、「シークレットクライアント」をご参照ください。
ステップ4:Nacos クライアント (SDK) で認証を設定する
Nacos クライアント (Java 用 SDK)
Nacos クライアント (Java 用 SDK) を使用する場合、必要な依存関係を追加し、アプリケーションに次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>properties.put(PropertyKeyConst.SERVER_ADDR, "${MSE Nacos インスタンスのエンドポイント}");
# 代わりに環境変数 ALIBABA_CLOUD_SECRET_NAME を設定できます。
properties.put(ExtensionAuthPropertyKey.SECRET_NAME.getKey(), "${RAM シークレットの名前}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);Spring Cloud Alibaba フレームワーク
Spring Cloud Alibaba フレームワークを使用する場合、必要な依存関係を追加し、アプリケーションの構成ファイルに次の構成を追加します。
Spring Cloud Alibaba フレームワークを 2.2.9.RELEASE 以降にアップグレードする必要があります。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency>## レジストリ
# 代わりに環境変数 ALIBABA_CLOUD_SECRET_NAME を設定できます。
spring.cloud.nacos.discovery.alibabaCloudSecretName=${RAM シークレットの名前}
## 設定センター
# 代わりに環境変数 ALIBABA_CLOUD_SECRET_NAME を設定できます。
spring.cloud.nacos.config.alibabaCloudSecretName=${RAM シークレットの名前}Dubbo フレームワーク
Dubbo フレームワークを使用する場合、必要な依存関係を追加し、Dubbo アプリケーションの構成ファイルのレジストリ URL に次の構成を追加します。
Nacos クライアントのバージョンは 2.1.0 以降である必要があります。詳細については、「認証、暗号化、復号でサポートされる Nacos クライアントのバージョン」をご参照ください。
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client-mse-extension</artifactId>
<!-- バージョンは 1.0.5 以降である必要があります。 -->
<version>1.0.5</version>
</dependency># 代わりに環境変数 ALIBABA_CLOUD_SECRET_NAME を設定できます。
dubbo.registry.address=nacos://${MSE Nacos インスタンスのエンドポイント}:8848?alibabaCloudSecretName=${RAM シークレットの名前}関連ドキュメント
インターネット経由で MSE Nacos インスタンスにアクセスする必要がある場合は、パブリック IP アドレスのホワイトリストが設定されていることを確認してください。詳細については、「パブリック IP アドレスのホワイトリストの設定」をご参照ください。
詳細な権限付与の詳細については、「レジストリでの詳細な認証」および「設定センターでの詳細な認証」をご参照ください。
MSE コンソールで権限を付与する方法の詳細については、「マイクロサービスレジストリリソースに対する権限の付与」をご参照ください。
Nacos SDK の使用に関する制限の詳細については、「MSE Nacos SDK の適用と Nacos SDK の制限されたバージョン」をご参照ください。
Nacos の問題に関する詳細については、「Nacos に関するよくある質問」をご参照ください。