Azure Cosmos DB での最小 TLS バージョンの適用をセルフサービスする

適用対象: NoSQL MongoDB Cassandra Gremlin Table

この記事では、セルフサービス API を使用して、Cosmos DB アカウントに最小バージョンの TLS プロトコルを適用する方法について説明します。

Azure Cosmos DB で最小 TLS バージョンの適用が機能する方法

Cosmos DB のマルチテナントの性質上、サービスは、すべてのユーザーのアクセスとセキュリティのニーズを満たす必要があります。 これを実現するために、Cosmos DB は、TLS が動作するネットワーク スタック内の下位レイヤーではなく、アプリケーション層で最小 TLS プロトコルを適用します。 顧客によってそのアカウントに設定された設定に従って、特定のデータベース アカウントに対する認証された要求で、この適用が実施されます。

サービス全体で受け入れられる最小バージョンは TLS 1.0 です。 この選択は、次のセクションで説明するように、アカウントごとに変更できます。

自分の Cosmos DB データベース アカウントに対して最小 TLS バージョンを設定する方法

Azure Cosmos DB リソース プロバイダー API の 2022-11-15 API バージョン以降では、minimalTlsVersion と呼ばれるすべての Cosmos DB データベース アカウントに対して新しいプロパティが公開されます。 次のいずれかの値を受け入れます。

  • Tls は最小バージョンを TLS 1.0 に設定します。
  • Tls11 は最小バージョンを TLS 1.1 に設定します。
  • Tls12 は最小バージョンを TLS 1.2 に設定します。

新規および既存のアカウントの既定値は Tls です。

重要

2023 年 4 月 1 日以降、新しいアカウントの既定値が Tls12 に切り替わります。

ポータルを使用して Azure Cosmos DB で最小 TLS プロトコルを設定する

このセルフサービス機能は、アカウントの作成と編集中にポータルで使用できます。 Azure Cosmos DB アカウントでは、TLS 1.2 プロトコルが適用されます。 ただし、Azure Cosmos DB では、選択した API の種類に応じて、次の TLS プロトコルもサポートされています。

  • MongoDB: TLS 1.2

  • Cassandra: TLS 1.2

  • テーブル、SQL およびグラフ: TLS 1.0、TLS 1.1 および TLS 1.2

アカウントの作成時に最小 TLS プロトコルを設定する手順

TLS 1.2 のみをサポートする API の種類を使用している場合は、下部の [ネットワーク] タブで TLS プロトコルが無効になっていることがわかります。

TLS 1.2 のみをサポートする API の種類のスクリーンショット。

複数の TLS プロトコルを受け入れる API の種類を使用している場合は、[ネットワーク] タブに移動すると、[Minimum Transport Layer Security Protocol] (最小トランスポート層セキュリティ プロトコル) オプションを使用できます。 選択したプロトコルは、ドロップダウンをクリックして目的のプロトコルを選択するだけで変更できます。

複数の TLS プロトコルを受け入れる API の種類のスクリーンショット。

アカウントを設定した後は、[Review + create] (確認と作成) タブの下部にある [ネットワーク] セクション内で、選択した TLS プロトコルが指定したとおりに設定されていることを確認できます。

選択した TLS プロトコルが指定したとおりに設定されているスクリーンショット。

アカウントの編集時に最小 TLS プロトコルを設定する手順

  1. Azure portal で Azure Cosmos DB アカウントに移動します。

  2. 左側のメニューから [ネットワーク] を選択し、[接続] タブを選択します。

  3. [Minimum Transport Layer Security Protocol] (最小トランスポート層セキュリティ プロトコル) オプションがあります。 TLS 1.2 のみをサポートする API の種類を使用している場合、このオプションは無効になっています。 それ以外の場合は、目的の TLS プロトコルをクリックするだけで選択できます。

最小トランスポート層セキュリティ プロトコル オプションのスクリーンショット。

  1. TLS プロトコルを変更したら、[保存] をクリックします。

変更後の保存のスクリーンショット。

  1. 保存されると、成功通知が表示されます。 ただし、構成の更新が完了してから変更が有効になるまでに最大 15 分かかる可能性があります。

成功通知のスクリーンショット。

Azure CLI を使用して設定する

Azure CLI を使用して設定するには、このコマンドを使用します。

rg="myresourcegroup"
dbName="mycosmosdbaccount"
minimalTlsVersion="Tls12"
az cosmosdb update -n $dbName -g $rg --minimal-tls-version $minimalTlsVersion

Azure PowerShell を使用して設定する

Azure PowerShell を使用して有効にするには、このコマンドを使用します。

$minimalTlsVersion = 'Tls12'
$patchParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Payload = "{ 'properties': {
      'minimalTlsVersion': '$minimalTlsVersion'
  } }"
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParameters

ARM テンプレートを使用して設定する

ARM テンプレートを使用してこのプロパティを設定するには、既存のテンプレートを更新するか、現在のデプロイ用の新しいテンプレートをエクスポートしてから、目的の最小 TLS バージョンの値を指定して、"minimalTlsVersion"databaseAccounts リソースのプロパティに追加します。 ここで、パラメーターを使用してこのプロパティ設定を指定する Azure Resource Manager テンプレートの基本的な例を示します。

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "mycosmosdbaccount",
      "apiVersion": "2022-11-15",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": {
          "defaultConsistencyLevel": "[parameters('defaultConsistencyLevel')]",
          "maxStalenessPrefix": 1,
          "maxIntervalInSeconds": 5
        },
        "locations": [
          {
            "locationName": "[parameters('location')]",
            "failoverPriority": 0
          }
        ],
        "locations": "[variable('locations')]",
        "databaseAccountOfferType": "Standard",
        "minimalTlsVersion": "[parameters('minimalTlsVersion')]",
      }
    }
}

重要

このプロパティを使用して再デプロイする場合は、アカウントと子リソースの他のプロパティを必ず含めてください。 このテンプレートをそのままデプロイしないでください。すべてのアカウント プロパティがリセットされます。

新しいアカウントの場合

上記の ARM テンプレートを使用するか、Azure CLI または Azure PowerShell で PATCH メソッドを PUT に変更することによって、minimalTlsVersion プロパティを設定してアカウントを作成できます。 アカウントの他のプロパティを含めているか確認してください。

重要

アカウントが存在している場合に、PUT 要求で minimalTlsVersion プロパティが省略されると、2022-11-15 API バージョン以降では、そのプロパティは既定値にリセットされます。

最小 TLS バージョンの適用を確認する方法

Cosmos DB ではアプリケーション層で TLS の最小バージョンが適用されるため、特定の TLS バージョンのサービスによってハンドシェイクが受け入れられるかどうかをチェックする従来の TLS スキャナーでは、Cosmos DB での適用のテストは信頼できません。 適用を確認する方法については、オープンソース cosmos-tls-scanner ツールに関する公式情報を参照してください。

Azure CLI または Azure PowerShell を使用して、minimalTlsVersion プロパティの現在の値を取得することもできます。

Azure CLI を使用して現在の値を取得する

Azure CLI を使用してプロパティの現在の値を取得するには、このコマンドを実行します。

subId=$(az account show --query id -o tsv)
rg="myresourcegroup"
dbName="mycosmosdbaccount"
az rest --uri "/subscriptions/$subId/resourceGroups/$rg/providers/Microsoft.DocumentDB/databaseAccounts/$dbName?api-version=2022-11-15" --method GET

Azure PowerShell を使用して現在の値を取得する

Azure PowerShell を使用してプロパティの現在の値を取得するには、このコマンドを実行します。

$getParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Method = 'GET'
}
Invoke-AzRestMethod @getParameters

次のステップ

Azure Cosmos DB のセキュリティの詳細については、「Azure Cosmos DB のデータベース セキュリティの概要」を参照してください。