Criar uma função personalizada
Neste guia de instruções, você aprenderá a criar uma função personalizada para Operadores de Serviço. Uma função personalizada fornece as permissões necessárias para acessar os recursos do Publicador do AOSM (Azure Operator Service Manager) ao implantar um SNS (Serviço de Rede de Site).
Pré-requisitos
Entre em contato com sua equipe de conta da Microsoft para registrar sua assinatura do Azure para acesso ao Azure Operator Service Manager (AOSM) ou expresse seu interesse por meio do formulário de registro de parceiro.
Permissões/ações exigidas pela função personalizada
Ação Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/
Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read
Ação Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/
Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read
Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read
Decidir o escopo
Decida o escopo ao qual você deseja que a função seja atribuída:
Se os recursos do editor estiverem em um único grupo de recursos, você poderá usar o escopo atribuível desse grupo de recursos.
Se os recursos do editor estiverem espalhados por vários grupos de recursos em uma única assinatura, você deverá usar o escopo atribuível dessa assinatura.
Se os recursos do editor estiverem espalhados por várias assinaturas, você deverá criar uma função personalizada atribuível a cada uma dessas assinaturas.
Criar função personalizada usando o Bicep
Crie uma função personalizada usando o Bicep. Para obter mais informações, consulte Criar ou atualizar funções personalizadas do Azure usando o Bicep
Como exemplo, você pode usar o exemplo a seguir como o modelo main.bicep. Este exemplo cria a função com escopo atribuível em toda a assinatura.
targetScope = 'subscription'
@description('Array of actions for the roleDefinition')
param actions array = [
'Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/action'
'Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read'
'Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/action'
'Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read'
'Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read'
]
@description('Array of notActions for the roleDefinition')
param notActions array = []
@description('Friendly name of the role definition')
param roleName string = 'Custom Role - AOSM Service Operator access to Publisher'
@description('Detailed description of the role definition')
param roleDescription string = 'Provides read and use access to AOSM Publisher resources'
var roleDefName = guid(subscription().id, string(actions), string(notActions))
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
name: roleDefName
properties: {
roleName: roleName
description: roleDescription
type: 'customRole'
permissions: [
{
actions: actions
notActions: notActions
}
]
assignableScopes: [
subscription().id
]
}
}
Quando você implanta o modelo, ele deve ser implantado na mesma assinatura que os recursos do Publisher.
az login
az account set --subscription <publisher subscription>
az deployment sub create --location <location> --name customRole --template-file main.bicep
Criar uma função personalizada usando o portal do Azure
Crie uma função personalizada usando o portal do Azure. Para obter mais informações, consulte Criar ou atualizar funções personalizadas do Azure usando o portal do Azure
Se preferir, você pode especificar a maioria dos valores de função personalizada em um arquivo JSON.
JSON de exemplo:
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.22.6.54827",
"templateHash": "14238097231376848271"
}
},
"parameters": {
"actions": {
"type": "array",
"defaultValue": [
"Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/use/action",
"Microsoft.HybridNetwork/Publishers/NetworkFunctionDefinitionGroups/NetworkFunctionDefinitionVersions/read",
"Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/use/action",
"Microsoft.HybridNetwork/Publishers/NetworkServiceDesignGroups/NetworkServiceDesignVersions/read",
"Microsoft.HybridNetwork/Publishers/ConfigurationGroupSchemas/read"
],
"metadata": {
"description": "Array of actions for the roleDefinition"
}
},
"notActions": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of notActions for the roleDefinition"
}
},
"roleName": {
"type": "string",
"defaultValue": "Custom Role - AOSM Service Operator Role",
"metadata": {
"description": "Friendly name of the role definition"
}
},
"roleDescription": {
"type": "string",
"defaultValue": "Role Definition for AOSM Service Operator Role",
"metadata": {
"description": "Detailed description of the role definition"
}
}
},
"variables": {
"roleDefName": "[guid(subscription().id, string(parameters('actions')), string(parameters('notActions')))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"name": "[variables('roleDefName')]",
"properties": {
"roleName": "[parameters('roleName')]",
"description": "[parameters('roleDescription')]",
"type": "customRole",
"permissions": [
{
"actions": "[parameters('actions')]",
"notActions": "[parameters('notActions')]"
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}