В результате мне нужно подключить свое 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
На самом деле я не знаю, является ли это правильным способом делать то, что я хочу. Если есть другой хороший способ разрешить клиенту доступ только к этому ресурсу, сообщите мне.
Если это правильный путь, что я здесь не так делаю?