Microsoft Entra 資格情報を使用して PowerShell コマンドを実行して BLOB データにアクセスする

Azure Storage には、Microsoft Entra 資格情報でサインインして、スクリプト コマンドを実行できるようにする PowerShell のための拡張機能があります。 Microsoft Entra 資格情報を使用して PowerShell にサインインすると、OAuth 2.0 アクセス トークンが返されます。 そのトークンが PowerShell によって自動的に使用され、BLOB ストレージに対するその後のデータ操作が承認されます。 サポートされている操作については、コマンドでアカウント キーや SAS トークンを渡す必要がなくなりました。

Azure ロールベースのアクセス制御 (Azure RBAC) 経由で、Microsoft Entra セキュリティ プリンシパルに BLOB データへのアクセス許可を割り当てることができます。 Azure Storage の Azure ロールの詳細については、「BLOB データにアクセスするための Azure ロールを割り当てる」を参照してください。

サポート対象の操作

Azure Storage 拡張機能は、BLOB データの操作でサポートされています。 呼び出すことができる操作は、PowerShell にサインインする Microsoft Entra セキュリティ プリンシパルに付与されているアクセス許可によって異なります。 Azure Storage のコンテナーへのアクセス許可は、Azure RBAC を介して割り当てられます。 たとえば、BLOB データ閲覧者ロールが割り当てられている場合、コンテナーからデータを読み取るスクリプト コマンドを実行できます。 BLOB データ共同作成者ロールが割り当てられている場合、コンテナーまたはそれらに含まれているデータの読み取り、書き込み、または削除を行うスクリプト コマンドを実行できます。

コンテナーでの各 Azure Storage 操作に必要なアクセス許可の詳細については、「OAuth トークンを使用したストレージ操作の呼び出し」を参照してください。

重要

ストレージ アカウントが Azure Resource Manager の ReadOnly ロックでロックされている場合、そのストレージ アカウントに対してキーの一覧表示操作は許可されません。 キーの一覧表示は POST 操作であり、アカウントに対して ReadOnly ロックが構成されている場合、すべての POST 操作が禁止されます。 このため、アカウントが ReadOnly ロックでロックされている場合、アカウント キーをまだ所有していないユーザーは、Microsoft Entra 資格情報を使用して BLOB データにアクセスする必要があります。 PowerShell に、Microsoft Entra 資格情報で AzureStorageContext オブジェクトを作成するための -UseConnectedAccount パラメーターを含めます。

Microsoft Entra 資格情報を使用して PowerShell コマンドを呼び出す

Azure PowerShell を使用してサインインし、Microsoft Entra 資格情報を使用して Azure Storage に対する以降の操作を実行するには、ストレージ アカウントを参照するストレージ コンテキストを作成し、-UseConnectedAccount パラメーターを含めます。

Azure PowerShell から Microsoft Entra 資格情報を使用して新しいストレージ アカウントにコンテナーを作成する方法を次の例に示します。 山かっこ内のプレースホルダーをお客様独自の値に置き換えてください。

  1. Connect-AzAccount コマンドを使用して Azure アカウントにサインインします。

    Connect-AzAccount
    

    PowerShell を使用した Azure へのサインインの詳細については、「Azure PowerShell を使用してサインインする」を参照してください。

  2. New-AzResourceGroup を呼び出して、Azure リソース グループを作成します。

    $resourceGroup = "sample-resource-group-ps"
    $location = "eastus"
    New-AzResourceGroup -Name $resourceGroup -Location $location
    
  3. New-AzStorageAccount を呼び出して、ストレージ アカウントを作成します。

    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
      -Name "<storage-account>" `
      -SkuName Standard_LRS `
      -Location $location `
      -AllowBlobPublicAccess $false
    
  4. New-AzStorageContext を呼び出して、新しいストレージ アカウントを指定するストレージ アカウント コンテキストを取得します。 ストレージ アカウントを操作するときは、サインイン情報を繰り返し渡す代わりに、このコンテキストを参照することができます。 以降のデータ操作を Microsoft Entra 資格情報を使用して呼び出すために、-UseConnectedAccount パラメーターを含めます。

    $ctx = New-AzStorageContext -StorageAccountName "<storage-account>" -UseConnectedAccount
    
  5. コンテナーを作成する前に、ストレージ BLOB データ共同作成者ロールを自分に割り当てます。 自分がアカウント オーナーである場合でも、ストレージ アカウントに対してデータ操作を実行するための明示的なアクセス許可が必要となります。 Azure ロールの割り当ての詳細については、「BLOB データにアクセスするための Azure ロールを割り当てる」を参照してください。

    重要

    Azure ロールの割り当ての反映には数分かかることがあります。

  6. New-AzStorageContainer を呼び出して、コンテナーを作成します。 この呼び出しは前の手順で作成したコンテキストを使用するため、Microsoft Entra 資格情報を使用してコンテナーが作成されます。

    $containerName = "sample-container"
    New-AzStorageContainer -Name $containerName -Context $ctx
    

次のステップ