PowerShell を使用してセキュリティ プリンシパルにAzureロールを割り当てるには、New-AzRoleAssignment コマンドを呼び出します。 コマンドを実行するには、Microsoft.Authorization/roleAssignments/write のアクセス許可を含むロールが該当するスコープ以上であなたに割り当てられている必要があります。
コマンドの形式は割り当てのスコープによって異なる場合がありますが、 -ObjectId パラメーターと -RoleDefinitionName パラメーターが必要です。
-Scope パラメーターは必要ありませんが、最小限の特権の原則を保持するためにパラメーターを含めます。 ロールとスコープを制限することで、セキュリティ プリンシパルが侵害された場合にリスクにさらされるリソースを制限することができます。
-ObjectId パラメーターは、ロールを割り当てるユーザー、グループ、またはサービス プリンシパルのMicrosoft Entra オブジェクト ID です。 識別子を取得するには、次の例に示すように、Get-AzADUser を使用して Microsoft Entra のユーザーをフィルターします。
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
最初の応答はセキュリティ プリンシパルを返し、2 番目の応答はセキュリティ プリンシパルのオブジェクト ID を返します。
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type :
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 Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
PowerShell を使用して、サブスクリプションまたはリソース グループをスコープとしたロールを割り当てる方法については、「Azure PowerShell を使用して Azure ロールを割り当てる」を参照してください。
Azure CLIを使用してセキュリティ プリンシパルにAzure ロールを割り当てるには、az ロールの割り当て 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>"
ロールを割り当てる、またはロールの割り当てを削除する場合、変更が有効になるまでに最大 10 分かかることがあります。
Azure CLI を使用して、サブスクリプション、リソース グループ、またはストレージ アカウントをスコープとしたロールを割り当てる方法については、「Azure CLI を使用して Azure ロールを割り当てる」を参照してください。