次の方法で共有


Azure API Management でクライアント証明書認証を使用してバックエンド サービスをセキュリティで保護する

適用対象: すべての API Management レベル

API Management を使用すると、クライアント証明書と相互 TLS 認証を使用して、API のバックエンド サービスへのアクセスをセキュリティで保護できます。 この記事では、Azure portal を使用して API Management で証明書を管理する方法について説明します。 また、証明書を使用してバックエンド サービスにアクセスするように API を構成する方法についても説明します。

API Management REST API を使用して API Management 証明書を管理することもできます。

証明書のオプション

API Management には、バックエンド サービスへのアクセスをセキュリティで保護するために使用される証明書を管理するための 2 つのオプションがあります。

  • Azure Key Vault で管理されている証明書を参照します。
  • API Management で証明書ファイルを直接追加します。

API Management のセキュリティが向上するため、キー コンテナー証明書を使用することをお勧めします。

  • キー コンテナーに格納されている証明書は、サービス間で再利用できます。
  • 詳細 なアクセス ポリシーは 、キー コンテナーに格納されている証明書に適用できます。
  • キー コンテナーで更新された証明書は、API Management で自動的にローテーションされます。 キー コンテナーの更新後、API Management の証明書は 4 時間以内に更新されます。 Azure portal または管理 REST API を使用して、証明書を手動で更新することもできます。

前提条件

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

  • API Management インスタンスをまだ作成していない場合は、「 API Management サービス インスタンスの作成」を参照してください。

  • バックエンド サービス クライアント証明書認証を構成します。 Azure App Service での証明書認証の構成の詳細については、「 App Service での TLS 相互認証の構成」を参照してください。

  • Azure Key Vault の管理用の証明書とパスワード、または API Management サービスにアップロードする証明書にアクセスできることを確認します。 証明書は PFX 形式である必要があります。 自己署名証明書も許可されます。

    自己署名証明書を使用する場合は、以下を行います。

キー コンテナー統合の前提条件

現在、この機能はワークスペースでは使用できません。

  1. まだキー コンテナーがない場合は作成します。 キー コンテナーの作成の詳細については、「 クイック スタート: Azure portal を使用してキー コンテナーを作成する」を参照してください。

  2. API Management でシステム割り当てマネージド ID またはユーザー割り当て マネージド ID を 有効にします。

キー コンテナーへのアクセスを構成する

  1. ポータルでキー コンテナーに移動します。
  2. 左側のメニューで、[ アクセスの構成] を選択します。 構成されている アクセス許可モデル に注意してください。
  3. アクセス許可モデルに応じて、API Management マネージド ID のキー コンテナー アクセス ポリシーまたは Azure RBAC アクセスを構成します。

キー コンテナーのアクセス ポリシーを追加するには:

  1. 左側のメニューで、[アクセス ポリシー] を選択します。
  2. [アクセス ポリシー] ページで、[+ 作成] を選択します。
  3. [ アクセス許可 ] タブの [ シークレットのアクセス許可] で、[ 取得一覧表示] を選択し、[ 次へ] を選択します。
  4. [ プリンシパル ] タブで [ プリンシパル] を選択し、マネージド ID のリソース名を検索して、[ 次へ] を選択します。 システムによって割り当てられた ID を使用している場合、プリンシパルは API Management インスタンスの名前です。
  5. もう一度 [次へ] を選択します [確認および作成] タブで、 [作成] を選択します。

キー コンテナーに証明書を作成するか、証明書をキー コンテナーにインポートする方法については、「 クイック スタート: Azure Portal を使用して Azure Key Vault から証明書を設定および取得する」を参照してください。

Key Vault ファイアウォールの要件

Key Vault のファイアウォールがキー コンテナーで有効になっている場合は、次の要件を満たす必要があります。

  • キー コンテナーにアクセスするには、API Management インスタンスのシステム割り当てマネージド ID を使用する必要があります。

  • Key Vault ファイアウォールで、 [Allow Trusted Microsoft Services to bypass this firewall](信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する) オプションを有効にします。

  • Azure API Management に追加する証明書またはシークレットを選択するときに、ローカル クライアントの IP アドレスがキー コンテナーへの一時的なアクセスを許可されるようにする必要があります。 詳細については、「Azure Key Vault のネットワーク設定を構成する」を参照してください。

    構成が完了したら、Key Vault ファイアウォールでクライアント アドレスをブロックできます。

仮想ネットワークの要件

API Management インスタンスが仮想ネットワークにデプロイされている場合は、次のネットワーク設定も構成してください。

  • API Management サブネットで Key Vault への サービス エンドポイント を有効にします。
  • AzureKeyVault と AzureActiveDirectory のサービス タグへの送信トラフィックを許可するネットワーク セキュリティ グループ (NSG) 規則を構成します。

詳細については、 仮想ネットワークで API Management を設定するときのネットワーク構成に関するページを参照してください。

キー コンテナー証明書を追加する

キー コンテナー統合の前提条件」を参照してください。

重要

キー コンテナー証明書を API Management インスタンスに追加するには、キー コンテナーのシークレットを一覧表示するアクセス許可が必要です。

注意事項

API Management でキー コンテナー証明書を使用する場合は、キー コンテナーへのアクセスに使用される証明書、キー コンテナー、またはマネージド ID を削除しないように注意してください。

API Management にキー コンテナー証明書を追加するには、次の操作を行います。

  1. Azure portal で、API Management インスタンスに移動します。

  2. [セキュリティ][証明書] を選択します。

  3. [証明書]>[+ 追加] を選択します。

  4. [ID] に名前を入力します。

  5. [証明書] で、 [キー コンテナー] を選択します。

  6. キー コンテナー証明書の識別子を入力するか、 [選択] を選択してキー コンテナーから証明書を選択します。

    重要

    キー ボールトの証明書識別子を自分で入力する場合は、バージョン情報が含まれていないことを確認してください。 そうしないと、キー コンテナーで更新が行われた後に証明書が API Management で自動的にローテーションされません。

  7. クライアント ID で、システム割り当て ID または既存のユーザー割り当てマネージド ID を選択します。 詳細については、「Azure API Management でマネージド ID を使用する」を参照してください。

    ID には、キー コンテナーから証明書を取得して一覧表示するためのアクセス許可が必要です。 キー コンテナーへのアクセスをまだ構成していない場合は、必要なアクセス許可を使用して ID を自動的に構成できるように API Management からメッセージが表示されます。

  8. [追加] を選択します。

    ポータルで API Management にキー コンテナー証明書を追加する方法を示すスクリーンショット。

  9. [保存] を選択します。

証明書のアップロード

API Management にクライアント証明書をアップロードするには、次の操作を行います。

  1. Azure portal で、API Management インスタンスに移動します。

  2. [セキュリティ][証明書] を選択します。

  3. [証明書]>[+ 追加] を選択します。

  4. [ID] に名前を入力します。

  5. [証明書] で、 [カスタム] を選択します。

  6. 証明書 .pfx ファイルを参照して選択し、そのパスワードを入力します。

  7. [追加] を選択します。

    ポータルでクライアント証明書を API Management にアップロードするスクリーンショット。

  8. [保存] を選択します。

証明書がアップロードされると、 [証明書] ウィンドウに表示されます。 証明書が多数ある場合は、アップロードした証明書の拇印を書き留めてください。 ゲートウェイ認証にクライアント証明書を使用するように API を構成する必要があります。

ゲートウェイ認証にクライアント証明書を使用するように API を構成する

  1. Azure portal で、API Management インスタンスに移動します。

  2. [API][API] を選択します。

  3. 一覧から API を選びます。

  4. [ デザイン ] タブの [ バックエンド ] セクションで鉛筆アイコンを選択します。

  5. ゲートウェイの資格情報で、[クライアント証明書] を選択し、[クライアント証明書] の一覧で証明書を選択します。

  6. [保存] を選択します。

    ゲートウェイ認証にクライアント証明書を使用する

注意事項

この変更はすぐに有効です。 API の操作を呼び出すと、証明書を使用してバックエンド サーバーで認証が行われます。

ヒント

API のバックエンド サービスのゲートウェイ認証に証明書を指定すると、その証明書はその API のポリシーの一部になり、ポリシー エディターで表示できます。

自己署名証明書の証明書チェーン検証を無効にする

自己署名証明書を使用している場合は、証明書チェーンの検証を無効にして、API Management がバックエンド システムと通信できるようにする必要があります。 それ以外の場合は、500 エラー コードが表示されます。 この検証を無効にするには、 New-AzApiManagementBackend (新しいバックエンドの場合) または Set-AzApiManagementBackend (既存のバックエンドの場合) PowerShell コマンドレットを使用し、 -SkipCertificateChainValidation パラメーターを Trueに設定します。

$context = New-AzApiManagementContext -ResourceGroupName 'ContosoResourceGroup' -ServiceName 'ContosoAPIMService'
New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true

バックエンド REST API を使用して証明書チェーンの検証を無効にすることもできます。

クライアント証明書の削除

証明書を削除するには、省略記号 (...) メニューの [削除] を選択します。

証明書を削除します

重要

証明書がポリシーによって参照されている場合は、警告画面が表示されます。 証明書を削除するには、最初に証明書を使用するように構成されているポリシーから証明書を削除する必要があります。