Azure portal で Microsoft Entra の資格情報を使って BLOB データにアクセスするには、ユーザーに次のロールが割り当てられている必要があります。
- ストレージ BLOB データ閲覧者、ストレージ BLOB データ共同作成者などのデータ アクセス ロール
- 少なくとも Azure Resource Manager閲覧者ロール
これらのロールをユーザーに割り当てる方法については、「Azure portal を使用して Azure ロールを割り当てる」に記載されている手順に従ってください。
閲覧者ロールは Azure Resource Manager のロールであり、ユーザーにストレージ アカウントのリソースの表示を許可しますが、変更は許可しません。 これは Azure Storage 内のデータに読み取りアクセス許可を提供しませんが、アカウント管理リソースに対してのみです。 ユーザーが Azure portal 内の BLOB コンテナーに移動できるようにするには、閲覧者ロールが必要です。
たとえば、ストレージ BLOB データ共同作成者ロールをsample-container という名前のコンテナーのレベルで Mary というユーザーに割り当てると、Mary にはそのコンテナー内のすべての BLOB に対する読み取り、書き込み、および削除のアクセス権が付与されます。 ただし、Mary が Azure portal で BLOB を表示する場合、ストレージ BLOB データ共同作成者ロール自体は、BLOB を表示するためにポータル内でその BLOB に移動するための十分なアクセス許可を提供しません。 ポータル内を移動し、そこに表示されている他のリソースを表示するには、追加のアクセス許可が必要です。
Microsoft Entra の資格情報で Azure portal を使うには、ユーザーに閲覧者ロールが割り当てられている必要があります。 ただし、Microsoft.Storage/storageAccounts/listKeys/action アクセス許可を含むロールがユーザーに割り当てられている場合、ユーザーは共有キーによる認可を経てストレージ アカウント キーでポータルを使用できます。 ストレージ アカウント キーを使用するには、ストレージ アカウントに対して共有キー アクセスを許可する必要があります。 共有キー アクセスを許可または禁止する方法の詳細については、「Azure ストレージ アカウントの共有キーによる承認を禁止する」を参照してください。
閲覧者ロール以外の追加のアクセス許可を提供する Azure Resource Manager ロールを割り当てることもできます。 セキュリティのベスト プラクティスとして、割り当てるアクセス許可を最小限にとどめることをお勧めします。 詳細については、「Azure RBAC のベスト プラクティス」を参照してください。
PowerShell を使用して Azure ロールをセキュリティ プリンシパルに割り当てるには、New-AzRoleAssignment コマンドを呼び出します。 このコマンドを実行するには、対応するスコープ以上で割り当てられたMicrosoft.Authorization/roleAssignments/write アクセス許可を含むロールが必要です。
コマンドの形式は、割り当てのスコープによって異なりますが、-ObjectId
と-RoleDefinitionName
は必須のパラメーターです。 必須ではありませんが、最小限の特権の原則を保持するために、-Scope
パラメーターの値を渡すことを強くお勧めします。 ロールとスコープを制限することで、セキュリティ プリンシパルが侵害された場合にリスクにさらされるリソースを制限することができます。
-ObjectId
パラメーターは、ロールが割り当てられるユーザー、グループ、またはサービス プリンシパルの Microsoft Entra オブジェクト ID です。 ID を取得するには、次の例に示すように、Get AzADUser を使用して Microsoft Entra ユーザーをフィルター処理します。
Get-AzADUser -DisplayName '<Display Name>'(Get-AzADUser -StartsWith '<substring>').Id
最初の応答はセキュリティ プリンシパルを返し、2 番目の応答はセキュリティ プリンシパルのオブジェクト ID を返します。
UserPrincipalName : markpdaniels@contoso.comObjectType : UserDisplayName : Mark P. DanielsId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbType : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
-RoleDefinitionName
パラメーター値は、プリンシパルに割り当てる必要がある RBAC ロールの名前です。 Azure portal で Microsoft Entra の資格情報を使って BLOB データにアクセスするには、ユーザーに次のロールが割り当てられている必要があります。
- ストレージ BLOB データ共同作成者、ストレージ BLOB データ閲覧者などのデータ アクセス ロール
- Azure Resource Manager閲覧者ロール
BLOB コンテナーまたはストレージ アカウントにスコープ指定されたロールを割り当てるには、-Scope
パラメーターのリソースのスコープを含む文字列を指定する必要があります。 このアクションは、最小限の特権の原則に準拠しています。これは、ユーザーがジョブ機能を実行するために必要な最小限のアクセス レベルを付与される情報セキュリティの概念です。 この実践により、不要な特権によって発生する可能性のある偶発的または意図的な破損のリスクが軽減されます。
コンテナーのスコープのフォームは次のとおりです。
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
ストレージ アカウントのスコープのフォームは次のとおりです。
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
ストレージ アカウントに対してスコープが指定されたロールを割り当てるには、コンテナーのスコープを含む文字列を--scope
パラメーターに指定します。
次の例では、ストレージ BLOB データ共同作成者ロールをユーザーに割り当てます。 ロールの割り当ては、コンテナーのレベルにスコープが設定されます。 サンプルの値とブラケット (<>
) 内のプレースホルダーの値は、実際の値に置き換えてください。
New-AzRoleAssignment -SignInName <email> ` -RoleDefinitionName "Storage Blob Data Contributor" ` -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
次の例では、オブジェクト ID を指定することによって、ストレージ BLOB データ閲覧者ロールをユーザーに割り当てます。 ロールの割り当ては、ストレージ アカウントのレベルにスコープが設定されます。 サンプルの値とブラケット (<>
) 内のプレースホルダーの値は、実際の値に置き換えてください。
New-AzRoleAssignment -ObjectID "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" ` -RoleDefinitionName "Storage Blob Data Reader" ` -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
出力は次のようになります。
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>DisplayName : Mark PatrickSignInName : markpdaniels@contoso.comRoleDefinitionName : Storage Blob Data ReaderRoleDefinitionId : <Role Definition ID>ObjectId : <Object ID>ObjectType : UserCanDelegate : False
PowerShell を使用して、サブスクリプションまたはリソース グループをスコープとしたロールを割り当てる方法については、「Azure PowerShell を使用して Azure ロールを割り当てる」を参照してください。
Azure CLI を使用してセキュリティ プリンシパルに Azure ロールを割り当てるには、az role assignment create コマンドを使用します。 コマンドの形式は、割り当てのスコープによって異なります。 このコマンドを実行するには、対応するスコープ以上で割り当てられたMicrosoft.Authorization/roleAssignments/write アクセス許可を含むロールが必要です。
コンテナーに対してスコープが指定されたロールを割り当てるには、コンテナーのスコープを含む文字列を--scope
パラメーターに指定します。 コンテナーのスコープのフォームは次のとおりです。
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
次の例では、ストレージ BLOB データ共同作成者ロールをユーザーに割り当てます。 ロールの割り当ては、コンテナーのレベルにスコープが設定されます。 サンプルの値とブラケット (<>
) 内のプレースホルダーの値は、実際の値に置き換えてください。
az role assignment create \ --role "Storage Blob Data Contributor" \ --assignee <email> \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
次の例では、オブジェクト ID を指定することによって、ストレージ BLOB データ閲覧者ロールをユーザーに割り当てます。--assignee-object-id
パラメーター と--assignee-principal-type
パラメーターの詳細については、「az ロールの割り当て」を参照してください。 この例では、ロールの割り当ては、ストレージ アカウントのレベルにスコープが設定されます。 サンプルの値とブラケット (<>
) 内のプレースホルダーの値は、実際の値に置き換えてください。
az role assignment create \ --role "Storage Blob Data Reader" \ --assignee-object-id "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" \ --assignee-principal-type "User" \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
Azure CLI を使用して、サブスクリプション、リソース グループ、またはストレージ アカウントをスコープとしたロールを割り当てる方法については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。