Azure Cosmos DB でプライマリ、セカンダリ、読み取り、または読み取り/書き込みキーを取得する
[アーティクル]
10/07/2024
2 人の共同作成者
この記事の内容
適用対象: NoSQL MongoDB Cassandra Gremlin Table
主/セカンダリ キーにより、データベース アカウントのすべての管理リソースへのアクセスが提供されます。 主/セカンダリ キー:
アカウント、データベース、ユーザー、およびアクセス許可へのアクセスを提供します。
コンテナーとドキュメントへのきめ細かいアクセスを提供するために使用することはできません。
アカウントの作成時に作成されます。
いつでも再生成することができます。
重要
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
Azure Cosmos DB の場合、Microsoft Entra 認証は、使用可能な最も安全な認証メカニズムです。 API の適切なセキュリティ ガイドを確認します。
各アカウントは、プライマリ キーとセカンダリ キーという 2 つのキーで構成されます。 デュアル キーの目的は、アカウントとデータに継続的にアクセスできるようにしながら、キーの再生成またはロールを行えるようにすることです。
主/セカンダリ キーには、読み取り/書き込みと読み取り専用の 2 つのバージョンがあります。 読み取り専用キーは、アカウント上の読み取り操作のみを許可します。 これらは、アクセス許可リソースを読み取るためのアクセス権は提供しません。
前提条件
既存の Azure Cosmos DB アカウント
主キーを取得する
主キーは、通常、Azure portal または自動化を使用して配置できます。
Azure portal を使用して、次の 4 つの組み込みキーのいずれかを取得します。
プライマリ読み取り/書き込み
プライマリ読み取り専用
セカンダリ読み取り/書き込み
セカンダリ読み取り専用
Azure portal (https://portal.azure.com ) にサインインします。
既存の Azure Cosmos DB アカウントに移動します。
アカウント リソース ウィンドウで、サービス メニューの [設定] セクションから [キー] を選択 します。
[読み取り/書き込みキー] または [読み取り専用] セクションで、[主キー] フィールド または [セカンダリ キー] フィールドの値 を 見つけて記録します。
ヒント
値を記録する前に、キーの表示が必要になる場合があります。 既定では、キーは非表示になっています。
この Azure CLI スクリプトを使用して、Azure Cosmos DB アカウントからキーまたは接続文字列を取得します。
az cosmosdb keys list \
--resource-group "<name-of-existing-resource-group>" \
--name "<name-of-existing-account>" \
--type "keys"
警告
Azure CLI では、シークレットを出力するとアカウントのセキュリティが侵害される可能性があるという警告が表示されます。
--type
引数のオプションは次のとおりです。
connection-strings
keys
read-only-keys
詳細については、az cosmosdb keys list
を参照してください。
この Azure PowerShell スクリプトを使用して、Azure Cosmos DB アカウントからキーまたは接続文字列を取得します。
$parameters = @{
ResourceGroupName = "<name-of-existing-resource-group>"
Name = "<name-of-existing-account>"
Type = "Keys"
}
Get-AzCosmosDBAccountKey @parameters
Type
パラメーター のオプションは次のとおりです。
ConnectionStrings
Keys
ReadOnlyKeys
詳細については、Get-AzCosmosDBAccountKey
を参照してください。
この例の Bicep テンプレートは、既存の Azure Cosmos DB アカウントのすべての資格情報を出力します。
metadata description = 'Gets all keys and connection strings for an Azure Cosmos DB account.'
@description('The name of the Azure Cosmos DB account.')
param accountName string
resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' existing = {
name: accountName
}
output endpoint string = account.properties.documentEndpoint
var keys = account.listKeys()
output keys object = {
primary: {
readWrite: keys.primaryMasterKey
readOnly: keys.primaryReadonlyMasterKey
}
secondary: {
readWrite: keys.secondaryMasterKey
readOnly: keys.secondaryReadonlyMasterKey
}
}
var connectionStrings = account.listConnectionStrings()
output connectionStrings object = {
primary: {
readWrite: connectionStrings.connectionStrings[0].connectionString
readOnly: connectionStrings.connectionStrings[1].connectionString
}
secondary: {
readWrite: connectionStrings.connectionStrings[2].connectionString
readOnly: connectionStrings.connectionStrings[3].connectionString
}
}
警告
この Bicep テンプレートは、Bicep のリンター警告をトリガーします。 運用環境の Bicep テンプレートではシークレットを出力しないことをお勧めします。 このサンプルでは、このリンター警告は意図的に抑制されません。 詳細については、「リンター ルール - 出力にシークレットを含めないようにする」を参照してください 。
関連するコンテンツ