次の方法で共有


Split-Merge セキュリティの構成

適用対象:Azure SQL データベース

Split/Merge サービスを使用するには、セキュリティが正しく構成されていなければなりません。 このサービスは、Azure SQL Database の Elastic Scale 機能の一部です。 詳細については、「 分割マージ サービスをデプロイしてシャード 化されたデータベース間でデータを移動する」を参照してください。

証明書の構成

証明書は次の 2 つの方法で構成されます。

  1. TLS/SSL 証明書を構成するには
  2. クライアント証明書を構成するには

証明書を取得する

証明書はパブリック証明機関 (CA) または Windows Certificate Serviceから取得できます。 これは証明書を取得するための推奨方法です。

これらの方法が利用可能でない場合は、 自己署名証明書を生成できます。

証明書を生成するツール

ツールを実行する

TLS/SSL 証明書を構成する

通信の暗号化やサーバーの認証には TLS/SSL 証明書が必要です。 以下の 3 つのシナリオから最適なものを選択し、すべての手順を実行します。

新しい自己署名証明書を作成する

  1. 自己署名証明書を作成する
  2. 自己署名 TLS/SSL 証明書用の PFX ファイルを作成する
  3. クラウド サービスに TLS/SSL 証明書をアップロードする
  4. サービス構成ファイルの TLS/SSL 証明書を更新する
  5. TLS/SSL 証明機関をインポートする

証明書ストアにある既存の証明書を使用する

  1. 証明書ストアから TLS/SSL 証明書をエクスポートする
  2. クラウド サービスに TLS/SSL 証明書をアップロードする
  3. サービス構成ファイルの TLS/SSL 証明書を更新する

PFX ファイル内に既存の証明書を使用する

  1. クラウド サービスに TLS/SSL 証明書をアップロードする
  2. サービス構成ファイルの TLS/SSL 証明書を更新する

クライアント証明書の構成

サービスへの要求を認証するには、クライアント証明書が必要です。 以下の 3 つのシナリオから最適なものを選択し、すべての手順を実行します。

クライアント証明書をオフにする

  1. クライアント証明書ベースの認証をオフにする

新しい自己署名証明書を発行する

  1. 自己署名証明機関を作成する
  2. CA 証明書をクラウド サービスにアップロードする
  3. サービス構成ファイルの CA 証明書を更新する
  4. クライアント証明書を発行する
  5. クライアント証明書の PFX ファイルを作成する
  6. クライアント証明書をインポートする
  7. クライアント証明書のサムプリントをコピーする
  8. 許可されているクライアントをサービス構成ファイルに構成する

既存のクライアント証明書を使用する

  1. CA 公開キーの検索
  2. CA 証明書をクラウド サービスにアップロードする
  3. サービス構成ファイルの CA 証明書を更新する
  4. クライアント証明書のサムプリントをコピーする
  5. 許可されているクライアントをサービス構成ファイルに構成する
  6. クライアント証明書の失効確認を構成する

許可された IP アドレス

サービス エンドポイントへのアクセスは特定範囲の IP アドレスに制限できます。

ストアの暗号化を構成する

メタデータ ストアに格納されている資格情報を暗号化するには、証明書が必要です。 以下の 3 つのシナリオから最適なものを選択し、すべての手順を実行します。

新しい自己署名証明書を使用する

  1. 自己署名証明書を作成する
  2. 自己署名の暗号化証明書の PFX ファイルを作成する
  3. クラウド サービスに暗号化証明書をアップロードする
  4. サービス構成ファイルの暗号化証明書を更新する

証明書ストアにある既存の証明書を使用する

  1. 証明書ストアから暗号化証明書をエクスポートする
  2. クラウド サービスに暗号化証明書をアップロードする
  3. サービス構成ファイルの暗号化証明書を更新する

PFX ファイル内に既存の証明書を使用する

  1. クラウド サービスに暗号化証明書をアップロードする
  2. サービス構成ファイルの暗号化証明書を更新する

既定の構成

既定の構成では、HTTP エンドポイントへのすべてのアクセスを拒否します。 これらのエンドポイントへの要求にはデータベース資格情報などの機密情報が含まれる可能性があるため、この設定をお勧めします。

既定の構成では、HTTPS エンドポイントへのすべてのアクセスを許可します。 この設定は、さらに制限できます。

構成を変更する

エンドポイントに適用されるアクセス制御ルールのグループは、<の >EndpointAcls セクションに構成されます。

<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpIn" accessControl="DenyAll" />
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="AllowAll" />
</EndpointAcls>

アクセス制御グループ内のルールは、サービス構成ファイルの <AccessControl name=""> セクションに構成されます。

形式は、ネットワーク アクセス制御リスト ドキュメントに説明があります。 たとえば、HTTPS エンドポイントへのアクセスを範囲 100.100.0.0 ~ 100.100.255.255 の IP のみ許可する場合、ルールは次のようになります。

<AccessControl name="Restricted">
    <Rule action="permit" description="Some" order="1" remoteSubnet="100.100.0.0/16"/>
    <Rule action="deny" description="None" order="2" remoteSubnet="0.0.0.0/0" />
</AccessControl>
<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="Restricted" />
</EndpointAcls>

サービス拒否 (DOS) 防止

サービス拒否の攻撃を検出および防止するための支援として次の 2 種類のメカニズムがあります。

  • リモート ホストあたりの同時要求数の制限 (既定ではオフ)
  • リモート ホストあたりのアクセス レートの制限 (既定ではオン)

このような機能の基本となる機能の詳細については、IIS の Dynamic IP Security に関するページをご覧ください。 この構成を変更する場合、次の要素に注意が必要です。

  • リモート ホスト情報を扱うプロキシおよびネットワーク アドレス変換デバイスの動作
  • Web ロールにおける任意のリソースに対する各要求が考慮されている (例: スクリプト、イメージなどの読み込み)

同時アクセスの数を制限する

この動作を構成するための設定は、次のとおりです。

<Setting name="DynamicIpRestrictionDenyByConcurrentRequests" value="false" />
<Setting name="DynamicIpRestrictionMaxConcurrentRequests" value="20" />

この保護を有効にするには、DynamicIpRestrictionDenyByConcurrentRequests を true に変更します。

アクセス率を制限する

この動作を構成するための設定は、次のとおりです。

<Setting name="DynamicIpRestrictionDenyByRequestRate" value="true" />
<Setting name="DynamicIpRestrictionMaxRequests" value="100" />
<Setting name="DynamicIpRestrictionRequestIntervalInMilliseconds" value="2000" />

拒否された要求への応答を構成する

次の設定は、拒否された要求への応答を構成します。

<Setting name="DynamicIpRestrictionDenyAction" value="AbortRequest" />

サポートされている他の値については、IIS の Dynamic IP Security に関するドキュメントを参照してください。

サービス証明書を構成する操作

このセクションは参考程度にご覧ください。 次に概要を説明している手順に従って構成してください。

  • TLS/SSL 証明書を構成する
  • クライアント証明書の構成

自己署名証明書の作成

次のように実行します。

makecert ^
  -n "CN=myservice.cloudapp.net" ^
  -e MM/DD/YYYY ^
  -r -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.1" ^
  -a sha256 -len 2048 ^
  -sv MySSL.pvk MySSL.cer

カスタマイズするには、次のように実行します。

  • サービス URL 付き -n
    • ワイルドカード (CN=*.cloudapp.net) と別名 (CN=myservice1.cloudapp.net, CN=myservice2.cloudapp.net) がサポートされています。
  • 証明書の有効期限日がある -e

強力なパスワードを作成し、メッセージが表示されたら指定します。

自己署名 TLS/SSL 証明書用の PFX ファイルを作成する

次のように実行します。

pvk2pfx -pvk MySSL.pvk -spc MySSL.cer

パスワードを入力し、その後、次のオプションを使用して証明書をエクスポートします。

  • はい、秘密キーをエクスポートします
  • すべての拡張プロパティをエクスポートする

証明書ストアから TLS/SSL 証明書をエクスポートする

  • 証明書を検索する
  • [アクション] ->[すべてのタスク] ->Export... を選択します。
  • 次のオプションを使用して証明書を .PFX ファイルにエクスポートします。
    • はい、秘密キーをエクスポートします
    • 可能であれば、証明書パスのすべての証明書を含めます *すべての拡張プロパティをエクスポートします

クラウド サービスに TLS/SSL 証明書をアップロードする

既存または生成された .PFX ファイルと TLS キーのペアを使用して、証明書を次のようにアップロードします。

  • 秘密キーの情報を保護するパスワードを入力する

サービス構成ファイルの TLS/SSL 証明書を更新する

サービス構成ファイルの次の設定のサムプリント値を、クラウド サービスにアップロードされた証明書のサムプリントを使用して、次のように更新します。

<Certificate name="SSL" thumbprint="" thumbprintAlgorithm="sha1" />

TLS/SSL 証明機関をインポートする

サービスと通信するすべてのアカウントおよびマシンで、次の手順に従います。

  1. CER ファイルを Windows Explorer でダブルクリックします。
  2. [証明書] ダイアログで、[ 証明書のインストール...] を選択します。
  3. 信頼されたルート証明機関ストアに証明書をインポートします。

クライアント証明書ベースの認証をオフにする

クライアント証明書ベースの認証のみがサポートされています。これを無効にすると、他のメカニズムが (Microsoft Azure Virtual Network など) が機能していない限り、サービス エンドポイントへのパブリック アクセスが可能になります。

この機能を無効にするには、次のようにして、サービス構成ファイルでこの設定を false にします。

<Setting name="SetupWebAppForClientCertificates" value="false" />
<Setting name="SetupWebserverForClientCertificates" value="false" />

次に、CA 証明書の設定で、TLS/SSL 証明書と同じサムプリントを次のようにコピーします。

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

自己署名証明機関を作成する

認証機関として機能する自己署名証明書を作成するには、次の手順を実行します。

makecert ^
-n "CN=MyCA" ^
-e MM/DD/YYYY ^
 -r -cy authority -h 1 ^
 -a sha256 -len 2048 ^
  -sr localmachine -ss my ^
  MyCA.cer

これをカスタマイズするには次のようにします。

  • 認定資格の有効期限日がある -e

CA の公開キーを検索する

すべてのクライアント証明書は、サービスで信頼されている証明機関によって発行される必要があります。 クラウド サービスにアップロードするために、認証に使用するクライアント証明書を発行した認証機関への公開キーを検索します。

公開キーのファイルが利用可能でない場合、証明書ストアから次のようにエクスポートしてください。

  • 証明書を検索する
    • 同じ証明機関によって発行されたクライアント証明書を検索します。
  • 証明書をダブルクリックする
  • 証明書のダイアログ ボックスで、[証明のパス] タブをクリックする
  • パスの CA エントリをダブルクリックする
  • 証明書のプロパティを書き留める
  • [証明書] ダイアログ ボックスを閉じる
  • 証明書を検索する
    • 前のように CA を検索します。
  • [アクション] ->[すべてのタスク] ->Export... を選択します。
  • 次のオプションを指定した証明書を .CER にエクスポートする。
    • いいえ、秘密キーをエクスポートしません
    • 可能であれば、証明書パスにあるすべての証明書を含む
    • すべての拡張プロパティをエクスポートする

CA 証明書をクラウド サービスにアップロードする

既存または生成された .CER ファイルを CA 公開キーと共にアップロードします。

サービス構成ファイルの CA 証明書を更新する

サービス構成ファイルの次の設定のサムプリント値を、クラウド サービスにアップロードされた証明書のサムプリントを使用して、次のように更新します。

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

同じサムプリントを使用して、次の設定の値を更新します。

<Setting name="AdditionalTrustedRootCertificationAuthorities" value="" />

クライアント証明書を発行する

サービスへのアクセスが許可された各個人は、排他的に使用するクライアント証明書を持っている必要があります。また、秘密キーを保護するための強力なパスワードを独自に選択する必要があります。

自己署名 CA 証明書が生成および格納された同じマシンで、次の手順を実行する必要があります。

makecert ^
  -n "CN=My ID" ^
  -e MM/DD/YYYY ^
  -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.2" ^
  -a sha256 -len 2048 ^
  -in "MyCA" -ir localmachine -is my ^
  -sv MyID.pvk MyID.cer

次のようにカスタマイズします。

  • -n この証明書で認証されるクライアントの ID を持つ
  • 証明書の有効期限日がある -e
  • MyID.pvkおよびMyID.cerは、このクライアント証明書用の一意なファイル名を持っています。

このコマンドでは、パスワードの作成と 1 回の使用が求められます。 強力なパスワードを使用してください。

クライアント証明書の PFX ファイルを作成する

生成された各クライアント証明書で、次のように実行します。

pvk2pfx -pvk MyID.pvk -spc MyID.cer

次のようにカスタマイズします。

MyID.pvk and MyID.cer with the filename for the client certificate

パスワードを入力し、その後、次のオプションを使用して証明書をエクスポートします。

  • はい、秘密キーをエクスポートします
  • すべての拡張プロパティをエクスポートする
  • この証明書の発行先である個人は、パスワードのエクスポートを選択する必要があります。

クライアント証明書をインポートする

クライアント証明書が発行されている各ユーザーは、キー ペアを、サービスとの通信で使用するマシンに次のようにインポートする必要があります。

  • Windows エクスプローラーで .PFX ファイルをダブルクリックする
  • 少なくとも次のオプションを使用して、個人用ストアに証明書をインポートします。
    • チェック済みの拡張されたすべてのプロパティを含める

クライアント証明書のサムプリントをコピーする

証明書が発行されている各ユーザーは、サービス構成ファイルに追加される自分の証明書のサムプリントを取得するために、次の手順を実行する必要があります。

  • certmgr.exe を実行する
  • [個人設定] タブをクリックする
  • 認証に使用するクライアント証明書をダブルクリックする
  • 表示される [証明書] ダイアログ ボックスで [詳細] タブをクリックする
  • すべてが表示されていることを確認する
  • 一覧の Thumbprint という名前のフィールドを選択する
  • サムプリントの値をコピーする
    • 最初の桁の前にある非表示の Unicode 文字を削除する
    • すべてのスペースを削除する

許可されているクライアントをサービス構成ファイルに構成する

サービス構成ファイルの次の設定値を、サービスへのアクセスが許可されたクライアント証明書のコンマで区切られたサムプリント一覧を使用して更新します。

<Setting name="AllowedClientCertificateThumbprints" value="" />

クライアント証明書の失効確認を構成する

既定の設定では、証明機関によるクライアント証明書の失効状態の確認は行われません。 クライアント証明書を発行した証明機関がこのような確認をサポートする場合にこの確認をオンにするには、X509RevocationMode 列挙型に定義された値の 1 つを使用して次のように設定を変更します。

<Setting name="ClientCertificateRevocationCheck" value="NoCheck" />

自己署名の暗号化証明書の PFX ファイルを作成する

暗号化証明書は、次のように実行します。

pvk2pfx -pvk MyID.pvk -spc MyID.cer

次のようにカスタマイズします。

MyID.pvk and MyID.cer with the filename for the encryption certificate

パスワードを入力し、その後、次のオプションを使用して証明書をエクスポートします。

  • はい、秘密キーをエクスポートします
  • すべての拡張プロパティをエクスポートする
  • クラウド サービスに証明書をアップロードする際に、このパスワードが必要になります。

証明書ストアから暗号化証明書をエクスポートする

  1. 証明書を検索します。
  2. [アクション] ->[すべてのタスク] ->エクスポート....
  3. 次のオプションを設定して証明書を .PFX ファイルにエクスポートします。
  • はい、秘密キーをエクスポートします
  • 可能であれば、証明書パスにあるすべての証明書を含む
  1. すべての拡張プロパティをエクスポートする

クラウド サービスに暗号化証明書をアップロードする

既存または生成された .PFX ファイルと 暗号化キーのペアを使用して、証明書を次のようにアップロードします。

  • 秘密キーの情報を保護するパスワードを入力する

サービス構成ファイルの暗号化証明書を更新する

サービス構成ファイルの次の設定のサムプリント値を、クラウド サービスにアップロードされた証明書のサムプリントを使用して、次のように更新します。

<Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

一般的な証明操作

  • TLS/SSL 証明書を構成する
  • クライアント証明書の構成

証明書を検索する

次の手順に従います。

  1. Windows で、 mmc.exeを実行します。
  2. File ->スナップインの追加と削除...
  3. [証明書] を選択します。
  4. [] を選択し、[] を追加します。
  5. 証明書ストアの場所を選択します。
  6. 完了 を選択します。
  7. [OK] を選択.
  8. [証明書] を展開します。
  9. 証明書ストアを展開します。
  10. 証明書の子ノードを展開します。
  11. 一覧から 1 つの証明書を選択します。

証明書をエクスポートします。

証明書のエクスポート ウィザードで次のように実行します。

  1. [次へ] を選択します。
  2. [はい][秘密キーをエクスポートします] の順に選択します。
  3. [次へ] を選択します。
  4. 目的の出力ファイル形式を選択します。
  5. 必要なオプションを確認します。
  6. [パスワード] をオンにします。
  7. 強力なパスワードを入力し、確定します。
  8. [次へ] を選択します。
  9. 証明書が格納されているファイル名を入力するか参照します (拡張子 .PFX を使用)。
  10. [次へ] を選択します。
  11. 完了 を選択します。
  12. [OK] を選択.

証明書のインポート

証明書のインポート ウィザードで次のように実行します。

  1. ストアの場所を選択します。

    • 現在のユーザーが実行中のプロセスのみがサービスにアクセスする場合は、 [現在のユーザー] を選択します。
    • このコンピューターの他のプロセスがサービスにアクセスする場合は、 [ローカル マシン] を選択します。
  2. [次へ] を選択します。

  3. ファイルからインポートしている場合は、ファイルのパスを確認します。

  4. .PFX ファイルをインポートする場合は、次のようにします。

    1. 秘密キーの情報を保護するパスワードを入力する
    2. インポート オプションを選択する
  5. 次のストアに証明書の "場所" を選択します。

  6. を選択し、を参照します。

  7. 目的のストアを選択します。

  8. 完了 を選択します。

    • 信頼されたルート証明機関ストアが選択されている場合は、[ はい] を選択します。
  9. すべてのダイアログ ウィンドウで [OK] を選択します

証明書のアップロード

Azure Portal で次のように実行します

  1. [クラウド サービス] を選択します。
  2. クラウド サービスを選択します。
  3. 上部のメニューで、[ 証明書] を選択します。
  4. 下部のバーで、[ アップロード] を選択します。
  5. 証明書ファイルを選択します。
  6. .PFX ファイルの場合は、秘密キーのパスワードを入力します。
  7. 完了したら、一覧内の新しいエントリから証明書の拇印をコピーします。

その他のセキュリティの考慮事項

このドキュメントで説明した TLS の設定では、HTTPS エンドポイント使用時のサービスとクライアント間の通信が暗号化されます。 この暗号化が重要なのは、通信には、データベース アクセスの資格証明と他の潜在的な機密情報が含まれているためです。 しかし、このサービスでは、Microsoft Azure サブスクリプションでメタデータ ストレージ用に指定した Azure SQL Database のデータベース内の内部テーブルに、資格情報を含む内部の状態が維持されることにご注意ください。 このデータベースは、サービス構成ファイルの設定の一部として次のように定義されたものです (.CSCFG ファイル)。

<Setting name="ElasticScaleMetadata" value="Server=..." />

このデータベースに格納されている資格情報が暗号化されます。 ただし、ベスト プラクティスとして、サービス デプロイメントにおける Web ロールとワーカー ロールの両方を最新に保ち、両者がメタデータのデータベースと保存された資格情報の暗号化と解読に使用する証明書へアクセスする際の安全性が保たれるようにします。

まだ弾力性データベース ツールを使用していない場合は、 ファースト ステップ ガイドを参照してください。 ご質問がある場合は、SQL Database に関する Microsoft Q&A 質問ページを参照してください。機能に関するご要望は、SQL Database に関するフィードバック フォーラムで新しいアイデアを追加したり、既存のアイデアに投票したりしてください。