Как создать пользовательскую Azure роль с использованием пользовательских правил для гибридного подключения - PullRequest
0 голосов
/ 19 февраля 2020

В результате мне нужно подключить свое WebApp из Azure к локальной базе данных. Для этого я буду использовать Azure Гибридное соединение. Однако, чтобы это работало, мне нужно установить Hybrid Connection Manager на локальный сервер моего клиента, а затем мне нужно войти в систему с какой-либо учетной записью, которая имеет разрешение на поиск и ссылку на указанное c Hybrid Connection (только его ).

Для этого я использовал следующую команду для создания настраиваемого правила авторизации для указанных объектов ретрансляции:

 New-AzRelayAuthorizationRule -ResourceGroupName "<ResourceGroup>" -Namespace "<NameSpaceFromRelay>" -HybridConnection "<NameOfHybridConnection>" -Name "ExampleAuthName" -Rights "Listen"
## Output

Rights: {Listen} 
Name: ExampleAuthName
Type: Microsoft.Relay/Namespaces/HybridConnections/AuthorizationRules 
Id: /subscriptions/<SUB_ID>/resourceGroups/<ResourceGroup>/providers/Microsoft.Relay/namespaces/<NameSpaceFromRelay>/hybridConnections/<NameOfHybridConnection>/authorizationRules/ExampleAuthName

Что я понял из документации, это новое правило, которое позволяет только тому, у кого оно есть, прослушивать это специфицированное c гибридное соединение.

Итак, теперь мне нужно создать новую роль с этим правилом, а затем добавить эту роль пользователю клиента, чтобы он мог получить доступ к диспетчеру гибридных подключений с помощью своей учетной записи (но не учетной записи администратора) и связать ее с указанным c гибридным подключением.

Для этого я попытался:

 import-module azureadpreview
 Connect-AzureAD -TenantId "<Tenant_ID>"

 # Basic role information
 $displayName = "Custom Client Role"
 $description = "Can link to Specific Hybrid connection"
 $templateId = (New-Guid).Guid

 # Set of permissions to grant
 $allowedResourceAction =
 @(
 "/subscriptions/<SUB_ID>/resourceGroups/<ResourceGroup>/providers/Microsoft.Relay/namespaces/<NameSpaceFromRelay>/hybridConnections/<NameOfHybridConnection>/authorizationRules/ExampleAuthName"
 )
 $rolePermissions = @{'allowedResourceActions'= $allowedResourceAction}

 # Create new custom admin role
 $customAdmin = New-AzureADMSRoleDefinition -RolePermissions $rolePermissions -DisplayName $displayName - 
 Description $description -TemplateId $templateId -IsEnabled $true
## Output

New-AzureADMSRoleDefinition : Error occurred while executing NewAzureADMSRoleDefinition
Code: Request_BadRequest
Message: Action
'/subscriptions/<SUB_ID>/resourceGroups/<ResourceGroup>/providers/Microsoft.Relay/namespaces/<NameSpaceFromRelay>/hybridConnections/<NameOfHybridConnection>/authorizationRules/ExampleAuthName' is not
supported.
InnerError:
  RequestId: <REQ_ID>
  DateTimeStamp: <DATE>
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:16
+ ... stomAdmin = New-AzureADMSRoleDefinition -RolePermissions $rolePermiss ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureADMSRoleDefinition], ApiException
    + FullyQualifiedErrorId : Microsoft.Open.MSGraphBeta.Client.ApiException,Microsoft.Open.MSGraphBeta.PowerShell.NewAzureADMSRoleDefinition

На самом деле я не знаю, является ли это правильным способом делать то, что я хочу. Если есть другой хороший способ разрешить клиенту доступ только к этому ресурсу, сообщите мне.

Если это правильный путь, что я здесь не так делаю?

1 Ответ

0 голосов
/ 20 февраля 2020

Команда New-AzureADMSRoleDefinition используется для создания пользовательской роли Azure AD, она просто поддерживает разрешения в Azure AD, а не для ресурсов Azure в подписке, все поддерживаемые разрешения здесь , вы также можете проверить их непосредственно на портале, перейдя по этой ссылке .

. Вам нужны пользовательские роли для Azure resources , создайте пользовательскую роль, задайте нужные вам действия, затем назначьте пользователю с определенной c scope.

Из вашего описания выглядит, что вы хотите ограничить доступ пользователя только к указанному правилу c auth в указанном c гибридном соединении, если так, я думаю, вы не можете. Поскольку гранулярность RBA C не так мала, вы можете сделать максимум, чтобы дать разрешение Microsoft.Relay/namespaces/HybridConnections/authorizationRules/listkeys/action в роли, назначить пользователя в качестве роли в области пространства имен (Access control (IAM) реле), см. ссылка . тогда он сможет перечислить ключи всех правил аутентификации в соединениях реле. Все действия, доступные в реле здесь , вы можете использовать их в зависимости от ваших требований.

Образец:

 {
  "Name": "Relay Operator",
  "Id": "88888888-8888-8888-8888-888888888888",
  "IsCustom": true,
  "Description": "Can do operions in the relay",
  "Actions": [
    "Microsoft.Relay/namespaces/HybridConnections/authorizationRules/listkeys/action",
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    /subscriptions/<subscription-id>/resourceGroups/<resource-grouo-name>/providers/Microsoft.Relay/namespaces/<relay-name>
  ]
}
...