複数のマイクロサービスが名前空間を共有する場合、デフォルトでは、どのコンシューマーも任意のプロバイダーパスを呼び出すことができます。サービス認証は、どのコンシューマーアプリケーションが特定のプロバイダーパスにアクセスできるかを制御するホワイトリストおよびブラックリストのルールを定義することで、このアクセスを制限します。これにより、コアビジネスロジックやコアデータを扱うような機密性の高いエンドポイントを、不正な内部呼び出しから保護します。
仕組み
サービス認証は、着信コールをグローバルルールとパス固有のルールの 2 種類のルールに照らして評価します。
サービス認証がない場合、名前空間内のすべてのコンシューマーは、プロバイダーのすべてのパスを呼び出すことができます:

サービス認証を使用する場合、2 つのレベルでアクセスを制御します:
| ルールタイプ | スコープ | 制限 |
|---|---|---|
| グローバルルール | プロバイダーのすべてのパス | プロバイダーごとに 1 つ |
| パス固有のルール | プロバイダーの単一パス | 複数許可 |
たとえば、次のように設定できます:
コンシューマー 1 をブラックリストに登録し (すべてのパスからブロック)、コンシューマー 2 と 3 をホワイトリストに登録する (すべてのパスへの呼び出しを許可) グローバルルールを作成します。
パス 2 (コアビジネスまたはコアデータを含む) からコンシューマー 2 をブラックリストに登録するパス固有のルールを作成し、コンシューマー 2 がパス 1 と 3 のみを呼び出せるようにします。

ルールの上書き動作
パス固有のルールは、そのパスに対するグローバルルールを完全に置き換えます。追加されるわけではありません。
| シナリオ | グローバルルール | パス固有のルール (パス 2) | パス 2 の結果 |
|---|---|---|---|
| パス固有のルールでアクセスを絞り込む | ホワイトリスト: コンシューマー 2、3 | ホワイトリスト: コンシューマー 3 のみ | コンシューマー 2 はパス 2 へのアクセス権を失い、コンシューマー 3 はアクセス権を維持します |
| パス固有のルールで 1 つのコンシューマーをブロック | ホワイトリスト: コンシューマー 2、3 | ブラックリスト: コンシューマー 2 | コンシューマー 2 はパス 2 からブロックされ、コンシューマー 3 はグローバルルールに従います |
| パス固有のルールなし | ホワイトリスト: コンシューマー 2、3 | (なし) | コンシューマー 2 と 3 はグローバルルールに従ってパス 2 を呼び出すことができます |
パス固有のルールを作成する際は、そのパスにアクセスできるべきすべてのコンシューマーを慎重に再指定してください。グローバルルールは、そのパスには適用されなくなります。
サービス認証ルールの作成
前提条件
開始する前に、以下を確認してください:
EDAS コンソールにアクセスできる EDAS アカウント
マイクロサービス名前空間にデプロイされた少なくとも 1 つの Spring Cloud プロバイダーアプリケーション
同じ名前空間にデプロイされた少なくとも 1 つのコンシューマーアプリケーション
操作手順
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、トラフィック管理 > マイクロサービスガバナンス > Spring Cloud を選択します。
Spring Cloud の左側のナビゲーションツリーで、サービス認証 をクリックします。
サービス認証 ページで、ルールの作成 をクリックします。
ルールの作成 ページで、次のセクションで説明するパラメーターを設定し、OK をクリックします。

基本パラメーター
| パラメーター | 説明 |
|---|---|
| マイクロサービス名前空間 | プロバイダーがデプロイされているリージョンとマイクロサービス名前空間。 |
| ルール名 | ルールの名前。最大 64 文字。英字、数字、アンダースコア (_)、ハイフン (-) を使用できます。 |
| 呼び出し先 | 保護するプロバイダーアプリケーション。 |
| 呼び出し先フレームワーク | プロバイダーのフレームワーク。 Spring Cloud を選択します。 |
| デフォルト状態 | オン (デフォルト): ルールは作成後すぐに有効になります。オフ: ルールは保存されますが、適用されません。後で有効にするには、サービス認証 ページの 操作 列にある 開く をクリックします。 |
グローバルルールパラメーター (すべてのインターフェイスルールを追加)
すべてのインターフェイスルールを追加 をクリックして、プロバイダーのすべてのパスに適用されるルールを定義します。プロバイダーごとに許可されるグローバルルールは 1 つだけです。
| パラメーター | 説明 |
|---|---|
| 呼び出し先インターフェイス | すべてのパス に固定されています。 |
| 認証方式 | ホワイトリスト (呼び出しを許可): リストされたコンシューマーのみがプロバイダーを呼び出すことができます。ブラックリスト (呼び出しを拒否): リストされたコンシューマーはプロバイダーの呼び出しをブロックされます。 |
| 呼び出し元 | 認証するコンシューマーアプリケーション。呼び出し元の追加 をクリックして、複数のアプリケーションを選択します。 |
パス固有のルールパラメーター (指定したインターフェイスルールを追加)
指定したインターフェイスルールを追加 をクリックして、単一のパスを対象とするルールを定義します。このルールは、そのパスに対するグローバルルールをオーバーライドします。
| パラメーター | 説明 |
|---|---|
| 呼び出し先パス | 保護する特定のパス。 |
| 認証方式 | ホワイトリスト (呼び出しを許可) または ブラックリスト (呼び出しを拒否)。 |
| 呼び出し元 | 認証するコンシューマーアプリケーション。呼び出し元の追加 をクリックして、複数のアプリケーションを選択します。 |
結果の確認
ルールが作成され、有効になった後、期待どおりに機能することを確認します:
ブロックされたコンシューマーからプロバイダーにリクエストを送信します。リクエストは認証エラーで失敗するはずです。
許可されたコンシューマーから同じプロバイダーパスにリクエストを送信します。リクエストは成功の応答を返すはずです。
パス固有のルールを設定した場合は、ブロックされたコンシューマーがそのルールでカバーされていない他のパスに引き続きアクセスできることを確認します。
既存ルールの管理
サービス認証 ページで、操作 列を使用してルールを管理します:
| アクション | 説明 |
|---|---|
| 編集 | ルールの構成を変更します。 |
| 閉じる | アクティブなルールを無効にします。ルールは保持されますが、適用されなくなります。 |
| 開く | 無効化されたルールを再度有効にします。 |
| 削除 | ルールを完全に削除します。 |