Azure Key Vaultのサポート
NetScaler ADCアプライアンスは、オンプレミス展開用に外部HSM(SafeNetおよびThales)と統合されます。クラウドデプロイの場合、ADC アプライアンスは Azure Key Vault と統合されます。アプライアンスは、パブリッククラウドドメインでの秘密キーの管理とセキュリティを容易にするために、秘密キーを Key Vault に保存します。複数のデータセンターやクラウドプロバイダーに展開されている ADC アプライアンスのキーを異なる場所に保管して管理する必要がなくなりました。
HSM でバックアップされたキーが提供された Azure Key Vault Premium の料金範囲で ADC を使用すると、FIPS 140-2 レベル 2 のコンプライアンスが提供されます。
Azure Key Vault は、Microsoftが提供する標準サービスです。Azure Key Vaultの詳細については、Microsoft Azure のドキュメントを参照してください。
注:
NetScalerとAzure Key Vaultの統合は、TLS 1.3プロトコルでサポートされています。
アーキテクチャの概要
Azure Key Vault は、Azure クラウドにシークレットを安全に保存するためのサービスです。キーを Azure Key Vault に保存することで、キーが盗まれる可能性を減らすことができます。Key Vault の設定が完了したら、キーを保管できます。Key Vault で秘密鍵操作を実行するように ADC アプライアンス上の仮想サーバーを構成します。ADC アプライアンスは、SSL ハンドシェイクごとにキーにアクセスします。
次の図は、認証後に Azure Active Directory からアクセストークンを取得するプロセスを示しています。このトークンは、秘密鍵を使用する暗号操作の REST API 呼び出しで使用されます。
次の図は、一般的な RSA ハンドシェイクを示しています。公開キーを使用して暗号化されたクライアントキー交換 (CKE) メッセージは、Key Vault に保存されている秘密キーを使用して復号されます。
ECDHEハンドシェイクでは、NetScalerアプライアンスから送信されるサーバーキー交換(SKE)メッセージは、Key Vaultに保存されている秘密鍵を使用して署名されます。
前提条件
-
Azure サブスクリプションが必要です。
-
(オプション) Linux マシンに Azure CLI をインストールします。手順については、Azure のドキュメントhttps://docs.microsoft.com/en-us/cli/azure/install-azure-cli-apt?view=azure-cli-latestを参照してください 。
-
ADC アプライアンスでエンティティを構成する前に、Azure Portal で構成を完了します。
ADC Azure Key Vault統合を構成する
最初に Azure Portal で構成を実行し、続いて ADC アプライアンスで構成を実行します。
Azure ポータルで次の手順を実行します
次のフローチャートは、Azure Portal で必要な構成の概要を示しています。
- Azure Active Directory にアプリとサービスのプリンシパルを作成します
- リソースグループに Key Vault を作成します。
- Key Vault で署名および復号化操作を実行するようにアプリとサービスプリンシパルを設定します。
-
次のいずれかの方法で Key Vault にキーを作成します。
- キーファイルをインポートする。
- 証明書を生成する。
上記の手順を構成するコマンドについては、https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principalsのAzure のドキュメントを参照してください。
ADC アプライアンスで次の手順を実行します
次のフローチャートは、ADC アプライアンスで必要な設定の概要を示しています。
- DNS サーバーを構成します。
- ルート証明書を構成して、Azure によって提示された証明書を検証します。
- Azure アプリケーションを作成します。
- Azure Key Vaultエンティティを作成します。
- HSM キーを作成します。
- 証明書とキーのペアを作成します。
- 証明書とキーのペアを仮想サーバーにバインドします。
DNS サーバーを構成する
Key Vaultホストと Azure Active Directory エンドポイントの名前解決には、DNS サーバーが必要です。
CLI を使用して DNS サーバーを設定するには
コマンドプロンプトで入力します:
add dns nameserver <IP address>
<!--NeedCopy-->
例:
add dns nameserver 192.0.2.150
<!--NeedCopy-->
GUI を使用して DNS サーバーを構成するには
-
[ トラフィック管理] > [DNS] > [ネームサーバー] に移動します。[追加] をクリックします。
- 次のパラメーターの値を入力します。
- IP アドレス-外部ネームサーバの IP アドレス。Local パラメータが設定されている場合は、ローカル DNS サーバ (LDNS) の IP アドレス。
- Protocol:ネームサーバーが使用するプロトコル。UDP_TCP は、ネームサーバーがアプライアンスに構成されている DNS 仮想サーバーである場合は無効です。
- [作成] をクリックします。
ルート証明書を追加してバインドする
AzureKey Vaulthttps://<vault_name>.vault.azure.net
と Azure Active Directory (AAD) https://login.microsoftonline.com によって提示された証明書のルート証明書をダウンロードし、ADC アプライアンスにロードします。これらの証明書は、Azure Key Vault と AAD によって提示された証明書を検証するために必要です。1 つ以上の証明書を CA証明書グループns_callout_certs
にバインドします。
CLI を使用してルート証明書を追加するには
コマンドプロンプトで入力します:
add ssl certkey <certkeyname> -cert <certname>
bind ssl caCertGroup <caCertGroupName> <certkeyName>
<!--NeedCopy-->
例: 次の例では、Azure Key Vault と AAD によって提示されるルート証明書は同じです。
add ssl certKey rootcert -cert RootCyberTrustRoot.crt
bind ssl cacertGroup ns_callout_certs rootcert
<!--NeedCopy-->
GUI を使用してルート証明書を追加するには
-
[ トラフィック管理] > [SSL] > [証明書] > [CA 証明書] に移動します。
- 次のパラメーターの値を入力します。
- 証明書とキーのペア名
- 証明書ファイル名
-
[Install]をクリックします。
-
トラフィック管理 > SSL > CA 証明書グループに移動します。
-
ns_callout_certs を選択し、[ バインディングの表示] をクリックします。
-
[Bind] をクリックします。
-
前に作成した CA 証明書を選択し、[ Select] をクリックします。
- [ バインド] をクリックし、[ 閉じる] をクリックします。
Azure アプリケーションの構成
Azure アプリケーションエンティティには、Azure Active Directory への認証とアクセストークンの取得に必要な資格情報が含まれています。つまり、Key Vault リソースと API への認証アクセスを取得するには、Azure アプリケーション ID、シークレット (パスワード)、テナント ID を ADC アプライアンスに追加します。
CLI を使用して Azure Application エンティティを構成する場合は、パスワードを入力する必要があります。GUI を使用する場合、Azure アプリケーションエンティティには、Azure Active Directory への認証とアクセストークンの取得に必要な資格情報が含まれます。
CLI を使用して Azure アプリケーションを構成するには
アクセストークンがアプリケーションに付与される前に、 add azure application
コマンドで VaultResource パラメーターを使用してリソースグループのドメインを取得します。ドメイン名は地域によって異なる可能性があるため、このパラメータが追加されます。たとえば、ドメインはvault.azure.net
またはvault.usgov.net
です。
コマンドプロンプトで入力します:
add azure application <name> -clientID <string> -clientSecret -tenantID <string> -vaultResource <string> [-tokenEndpoint <URL>]
show azure application
<!--NeedCopy-->
例:
add azure application app10 -clientiD 12345t23aaa5 -clientsecret csHzOoEzmuY= -vaultResource example.vault.azure.net -tenantID 33583ee9ca5b
Done
> sh azure application app10
1) Name: app10 ClientID: 12345t23aaa5
TokenEndpoint: "https://login.microsoftonline.com/33583ee9ca5b/"
TenantID: 33583ee9ca5b VaultResource: example.vault.azure.net
Done
<!--NeedCopy-->
GUI を使用して Azure アプリケーションを構成するには
-
トラフィック管理 > SSL > Azure > アプリケーションに移動します。
-
詳細ペインで、[ 追加] をクリックします。
-
次のパラメーターの値を入力します。
- 名前 — NetScalerアプライアンス上のアプリケーションオブジェクトの名前。
- クライアント ID — アプリケーションが Azure CLI または Azure ポータル (GUI) を使用して Azure Active Directory に作成されたときに生成されるアプリケーション ID。
- クライアントシークレット — Azure Active Directory で構成されたアプリケーションのパスワード。パスワードは Azure CLI で指定されるか、Azure ポータル (GUI) で生成されます。
- テナント ID — アプリケーションが作成されたAzure Active Directory 内のディレクトリの ID。
- Vault リソース-アクセストークンが付与される Vault リソース。例
vault.azure.net
。 - トークンエンドポイント — アクセストークンを取得できる URL。トークンエンドポイントが指定されていない場合、デフォルト値は
https://login.microsoftonline.com/<tenant id>
です。
Azure Key Vaultを構成する
ADC アプライアンスに Azure Key Vault オブジェクトを作成します。
CLI を使用して Azure Key Vaultを構成するには
コマンドプロンプトで入力します:
add azure keyVault <name> -azureVaultName <string> -azureApplication
<string>
show azure keyvault
<!--NeedCopy-->
例:
add azure keyvault kv1 -azureapplication app10 -azurevaultName pctest.vault.azure.net
> sh azure keyVault
1) Name: kv1 AzureVaultName: pctest.vault.azure.net
AzureApplication: app10 State: "Access token obtained"
Done
<!--NeedCopy-->
次の表に、Azure Key Vault の状態で使用できるさまざまな値と、各状態に関する簡単な説明を示します。
状態 | 説明 |
---|---|
Created |
Key Vault オブジェクトの初期状態。認証は試行されていません。 |
Could not reach token end point |
DNS サーバーが構成されていない、発行者証明書が CA 証明書グループにバインドされていない、またはネットワークの問題のいずれかを示します。 |
Authorization failed |
アプリケーション認証情報が正しくありません。 |
Token parse error |
Azure Active Directory からの応答が期待される形式ではありません。 |
Access token obtained |
Azure Active Directory によって正常に認証されました。 |
GUI を使用して Azure Key Vaultを構成するには
-
トラフィック管理 > SSL > Azure > Key Vaultに移動します。
-
次のパラメーターの値を入力します。
- Name:Key Vaultの名前。
- Azure Key Vault名-Azure CLI または Azure ポータル (GUI) を使用してドメイン名を使用して Azure クラウドで構成されたKey Vaultの名前。
- Azure アプリケーション名-ADC アプライアンスで作成された Azure アプリケーションオブジェクトの名前。この名前の Azure アプリケーションオブジェクトは、Azure Active Directory での認証に使用されます。
HSM キーの追加
プライベートキーを HSM に保存すると、FIPS 140-2 レベル 2 に準拠できます。
CLI を使用して HSM キーを追加するには
コマンドプロンプトで入力します:
add ssl hsmKey <hsmKeyName> [-hsmType <hsmType>] [-key <string> |
-serialNum <string>] {-password } [-keystore <string>]
<!--NeedCopy-->
例:
add ssl hsmKey h1 -keystore kv1 -key san15key -hsmType KEYVAULT
> sh ssl hsmKey h1
HSM Key Name: h1 Type: KEYVAULT
Key: san15key
Key store: kv1
State: “Created”
Done
<!--NeedCopy-->
次の表に、HSM キーの状態で使用できるさまざまな値と、各状態に関する簡単な説明を示します。
状態 | 説明 |
---|---|
作成日時 | HSM キーが ADC アプライアンスに追加されます。キー操作はまだ試行されていません。 |
アクセストークンが使用 | キー操作が試行されたときには、アクセストークンを使用できません。 |
無許可 | 構成された Azure アプリケーションには、キー操作を実行する権限がありません。 |
存在しない | キーは Azure Key ボールトに存在しません。 |
到達不能 | ネットワーク上の Key Vault ホストにアクセスできません。 |
マークダウン | キーの操作中にしきい値エラーが発生したため、ADC アプライアンスで HSM キーが DOWNとマークされます。 |
主要なオペレーションが成功しました | キー操作について Key Vault から成功レスポンスが届きました。 |
キー操作に失敗しました | キー操作のために Key Vault からエラー応答を受信しました。 |
キー操作が調整された | キー操作のリクエストは、Key Vault によって調整されます。 |
GUI を使用して HSM キーを追加するには
-
トラフィック管理] > [SSL] > [HSM]に移動します。
-
次のパラメータの値を入力します。
- HSM キー名-キーの名前。
- HSM タイプ-HSM のタイプ。
- Key store-キーが格納されている HSM を表すキーストアオブジェクトの名前。たとえば、キー Vault オブジェクトや Azure Key Vault 認証オブジェクトの名前などです。
KEYVAULT
タイプHSMにのみ適用されます。
-
[追加]をクリックします
証明書とキーのペアを追加します
前に作成した HSM キーを使用して、証明書とキーのペアを追加します。
CLI を使用して証明書とキーのペアを追加するには
コマンドプロンプトで入力します:
add ssl certKey <certkeyName> (-cert <string> [-password]) -hsmKey <string>]
show ssl certkey
<!--NeedCopy-->
例:
add ssl certKey serverrsa_2048 -cert /nsconfig/ssl/san_certs/san15.pem -hsmKey h1
> sh ssl certkey serverrsa_2048
Name: serverrsa_2048 Status: Valid, Days to expiration:9483
Version: 3
Serial Number: F5CFF9EF1E246022
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=in,O=citrix,CN=ca
Validity
Not Before: Mar 20 05:42:57 2015 GMT
Not After : Mar 12 05:42:57 2045 GMT
Certificate Type: "Server Certificate"
Subject: C=in,O=citrix
Public Key Algorithm: rsaEncryption
Public Key size: 2048
Ocsp Response Status: NONE
Done
<!--NeedCopy-->
GUI を使用して証明書とキーのペアを追加するには
-
[ トラフィック管理] > [SSL] > [証明書のインストール (HSM)] に移動します。
-
次のパラメーターの値を入力します。
- 証明書とキーのペア名
- 証明書ファイル名
- HSM キー
-
[Install]をクリックします。
証明書とキーのペアを仮想サーバーにバインドする
SSL トランザクションの処理に使用される証明書は、SSL データを受信する仮想サーバーにバインドする必要があります。
CLI を使用して SSL 証明書とキーのペアを仮想サーバーにバインドするには
コマンドプロンプトで入力します:
bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName>
show ssl vserver <vServerName>
<!--NeedCopy-->
例:
bind ssl vserver v1 -certkeyName serverrsa_2048
sh ssl vserver v1
Advanced SSL configuration for VServer v1:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
ClearText Port: 0
Client Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
HSTS Preload: NO
SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Zero RTT Early Data: DISABLED
DHE Key Exchange With PSK: NO
Tickets Per Authentication Context: 1
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: serverrsa_2048 Server Certificate
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
GUI を使用して SSL 証明書とキーのペアを仮想サーバーにバインドするには
-
[ トラフィック管理] > [負荷分散] > [仮想サーバー ] に移動し、SSL 仮想サーバーを開きます。[ 証明書 ] セクション内をクリックします。
-
矢印をクリックして、証明書とキーのペアを選択します。
-
リストから証明書とキーのペアを選択します。
-
証明書とキーのペアを仮想サーバーにバインドします。
制限事項
- キー操作のための Azure Key Vault への同時呼び出しの数には制限があります。ADCアプライアンスのパフォーマンスは、Key Vaultの制限によって異なります。詳細については、 Microsoft Azure Key Vaultのドキュメントを参照してください。
- EC キーはサポートされていません。
- EDT プロトコルと DTLS プロトコルはサポートされていません。
- Intel Coleto SSL チップを搭載した ADC アプライアンスはサポートされていません。
- クラスタリングおよび管理パーティションはサポートされていません。
- Azure アプリケーションエンティティ、Azure Key Vault オブジェクト、および HSM 証明書とキーのペアを ADC アプライアンスに追加した後は、更新できません。
- HSM キーを含む証明書バンドルはサポートされていません。
- HSM キーと証明書が一致しない場合、エラーは表示されません。証明書とキーのペアを追加する際は、HSM キーと証明書が一致していることを確認します。
- HSM キーを DTLS 仮想サーバーにバインドすることはできません。
- HSM キーを使用して作成された証明書とキーのペアを使用して OCSP リクエストに署名することはできません。
- HSM キーを使用して証明書とキーのペアを作成した場合、証明書とキーのペアを SSL サービスにバインドすることはできません。
よくある質問
Azure Key Vault と統合した場合、秘密キーは ADC アプライアンスのメモリに保存されますか
いいえ。秘密鍵は ADC アプライアンスのメモリには保存されません。SSL トランザクションごとに、アプライアンスは Key Vault にリクエストを送信します。
統合 FIPS 140-2 レベル 2 は準拠していますか
はい。統合ソリューションは FIPS 140-2 レベル 2 のサポートを提供します。
どのキータイプがサポートされていますか
RSA キータイプのみがサポートされています。
どのキーサイズがサポートされていますか
1024 ビット、2048 ビット、および 4096 ビットの RSA キーがサポートされています。
どの暗号がサポートされていますか
ECDHE と SHA256 を使用した TLSv1.3 暗号を含む、ADC アプライアンスでサポートされるすべての暗号がサポートされます。
トランザクションはログに記録されますか
ADC アプライアンスは、Key Vault との各トランザクションをログに記録します。時間、Vault IP アドレス、ポート、接続の成功または失敗、エラーなどの詳細がログに記録されます。 次に、SSL ログ出力の例を示します。
Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUCCESS 896 0 : Backend SPCBId 30894 - ServerIP 104.211.224.186 - ServerPort 443 - ProtocolVersion TLSv1.2 - CipherSuite "ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Non-Export 256-bit" - Session New - SERVER_AUTHENTICATED -SerialNumber "200005A75B04365827852D630000000005A75B" - SignatureAlgorithm "sha256WithRSAEncryption" - ValidFrom "Mar 17 03:28:42 2019 GMT" - ValidTo "Mar 17 03:28:42 2021 GMT" - HandshakeTime 40 ms Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_ISSUERNAME 897 0 : SPCBId 30894 - IssuerName " C=US,ST=Washington,L=Redmond,O=Microsoft Corporation,OU=Microsoft IT,CN=Microsoft IT TLS CA 2" Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUBJECTNAME 898 0 : SPCBId 30894 - SubjectName " CN=vault.azure.net" <!--NeedCopy-->