azure微软云之权限的管理
微软云对主机资源是分割开来的,即cpu、内存、内网、外网、磁盘、网络安全组都是可以拆开、合并的资源。这样导致的结果是所有的资源都可以单独给予权限。以下以powershell操作
登录
Login-AzureRmAccount -EnvironmentName AzureChinaCloud
选择订阅id
Set-AzureRmContext -SubscriptionId ****-**-**-**-****
订阅名称,订阅ID在自己账户即可查看
创建ad的用户名密码
$azureAdApplication = New-AzureRmADApplication -DisplayName "bbotte" -HomePage "http://bbotte.com" -IdentifierUris "http://bbotte.com" -Password "123456"
查看当前设置的信息
$azureAdApplication
创建服务凭证
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
添加角色设置,添加Reader只读授权
New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $azureAdApplication.ApplicationId
验证权限
Get-AzureRMRoleDefinition -Name "Reader"
以上几步即完成某订阅下只读权限的添加,下面是有关命令的操作:
查看本人有哪些权限
Get-AzureRMResourceProvider
通过权限名称获取权限信息
Get-AzureRMRoleDefinition -Name "bbotte-service-bus02"
列出角色的操作
(Get-AzureRmRoleDefinition bbotte-service-bus02).Actions
把权限另存为json文件
Get-AzureRMRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File e:\rbacrole2.json
通过json文件新增一个权限
New-AzureRmRoleDefinition -InputFile "e:\rbacrole2.json"
通过json文件更新权限
Set-AzureRmRoleDefinition -InputFile "e:\rbacrole2.json"
查看资源组谁具有访问权限
Get-AzureRmRoleAssignment -ResourceGroupName dev-service
查看以"bbotte"命名开头的应用权限
Get-AzureRmADApplication -DisplayNameStartWith "bbotte"
查看包含"bbotte"命名的应用权限
Get-AzureRmADApplication -DisplayName "bbotte"
删除一个应用权限,一般不用-Force,如果不加-Force不能删除,说明此权限有其他应用在使用
Remove-AzureRmADApplication -ObjectId objectid_number -Force
查看权限规则信息
Get-AzureRmRoleDefinition |FT Name, Id, IsCustom|findstr matuoyi
按id删除权限规则
Remove-AzureRmRoleDefinition -Id id_number
按名称删除权限规则
Get-AzureRmRoleDefinition "Virtual Machine Operator" | Remove-AzureRmRoleDefinition
例子:
分配某订阅下dev组服务总线的权限
New-AzureRmRoleDefinition -InputFile "e:\rbacrole2.json"
e:\rbacrole2.json文件内容如下:
{
"Name": "bbotte-service-bus02",
"Id": "*****-****-****-****-****",
"IsCustom": false,
"Description": "just for Service Bus.",
"Actions": [
"Microsoft.ServiceBus/*"
],
"NotActions": [
],
"AssignableScopes": [
"/subscriptions/*****-****-****-****-****/resourceGroups/dev-service"
]
}
Actions是选择赋予权限的服务
AssignableScopes可以精确到一个资源组或一个资源
NotActions是对Actions的附加,比如Actions有设置dev组服务总线下所有的权限,如上json,那么可以在NotActions添加禁止对某一个服务总线访问,NotActions是对Actions的补充 创建用户名密码:
$azureAdApplication = New-AzureRmADApplication -DisplayName "zhangsan_servicebus" -HomePage "http://zhangsan_servicebus.com" -IdentifierUris "http://zhangsan_servicebus.com" -Password "123456"
查看创建的信息
$azureAdApplication
下面几步可以通过web界面操作
创建服务凭证
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
把新建权限附加给用户
如果角色是针对订阅的则:
New-AzureRmRoleAssignment -RoleDefinitionName "bbotte-service-bus02" -ServicePrincipalName $azureAdApplication.ApplicationId
如果角色是针对资源组的则:
New-AzureRmRoleAssignment -RoleDefinitionName "bbotte-service-bus02" -ServicePrincipalName $azureAdApplication.ApplicationId -Scope "/subscriptions/****-****-****-****-****/resourceGroups/test-service"
把以下信息发送给开发,api需要的信息:
ApplicationId : ****-****-****-****-****
TENANTID : ****-****-****-****-****(Directory ID,也叫做Tenant ID或者租户ID通过portal管理界面’AD’-‘属性’获取)
resourceGroup : dev-service
订阅ID : ****-****-****-****-****
appSecret : 123456
2018年03月03日 于 linux工匠 发表