Autor: Ulisses Poveda do Nascimento

Profissional de Tecnologia com mais de 17 anos de experiência com tecnologia, sendo 16 com Infraestrutura de Redes e Servidores, Virtualização, Storage e como Arquiteto e Especialista em Cloud com Azure e AWS.

Criação de Custom Role no Azure com PowerShell no novo módulo AZ

Finalidade

Criação de grupos customizados para delegação de acessos específicos no Azure

Requisitos

Passos para criação

  • Listar Assinaturas com o comando Get-AzSubscription
  • Se já sabe qual é a Subscription que irá trabalhar, executar o comando com o nome da Subscription

Get-AzSubscription -SubscriptionName “Nome Assinatura”

  • Selecionar assinatura em qual Subscription irá trabalhar no PowerShell, obtendo os metadados usados para autenticar as solicitações do Azure Resource Manageraonde deseja criar o grupo.

Set-AzContext -SubscriptionId “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”

  • Criar um arquivo no formato exemplo abaixo:
{
    “Name”:  “Nome do Grupo”,
    “IsCustom”:  true,
                    “Id”: “id do grupo xxxxxxxxxxxxxxxxxxx”
    “Description”:  “Descrição do Grupo.”,
    “Actions”:  [
                    “Microsoft.Storage/*”,
                    “Microsoft.Network/*”,
                    “Microsoft.Compute/*”,
                    “Microsoft.Authorization/*/read”,
                    “Microsoft.Resources/subscriptions/resourceGroups/read”,
                    “Microsoft.Resources/deployments/validate/action”,
                    “Microsoft.Resources/deployments/operations/read”,
                    “Microsoft.Resources/deployments/delete”,
                    “Microsoft.Resources/deployments/write”,
                    “Microsoft.Resources/providers/read”,
                    “Microsoft.Resources/resources/read”,
                    “Microsoft.Insights/alertRules/*”,
                    “Microsoft.Insights/diagnosticSettings/*”,
                    “Microsoft.Support/*”,
                    “Microsoft.LogAnalytics/*/read”,
                    “Microsoft.DBforMySQL/*”,
                    “Microsoft.RecoveryServices/*”,
                    “Microsoft.Insights/*/read”
    ],
    “NotActions”:  [
                   ],
    “DataActions”:  [
                    ],
    “NotDataActions”:  [
                       ],
    “AssignableScopes”:  [
                    “/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
                         ]
  }
  • Uma vez criado o JSON, salvo em determinada pasta, contendo as respectivas permissões basta executar o comando para criar o grupo na sua Subscription:

New-AzureRmRoleDefinition -InputFile “C:\_Azure\customrole.json”

  • Se for criar novo Grupo, a chave IsCustom deve ter valor True e não precisa do Id, porém se for atualizar um grupo existente a chave IsCustom se mantém com True precisando pegar o ID do Grupo para adicionar à chave Id no arquivo JSON.
  • Para pegar o ID do Grupo execute o comando:

Get-AzRoleDefinition “Nome do Grupo”

  • Exemplo de saída do comando:
Name             : Nome do Grupo
Id               : xxxxxxxxxx
IsCustom         : True
Description      : Descrição do grupo e suas ações.
Actions          : {Microsoft.Storage/*, Microsoft.Network/*, Microsoft.Compute/*, Microsoft.Authorization/*/read…}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
  • Editar o arquivo JSON com o ID que pegou no comando acima:
    “Name”:  “Nome do Grupo”,
    “IsCustom”:  true,
            “Id”: “xxxxxxxxxxxxxxxxxxx”
  • Depois de pegar o ID, editar o JSON, basta executar o seguinte comando para atualizar sua role customizado, comando:

Set-AzureRmRoleDefinition -InputFile “C:\_Azure\customrole.json”

Referência:

Lista de Resource Provider para pesquisar e delegar correta permissão

https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations

Tutorial oficial Docs – Custom Role Powershell

https://docs.microsoft.com/en-us/azure/role-based-access-control/tutorial-custom-role-powershell

 

 

 

Como criar a custom Role do Azure com json template

Hoje no Azure temos uma série de Roles definidas para cada tipo, determinado acesso necessário conceder para seu usuário ou grupo de usuários, aonde cada um pode executar tal ação sobre o recurso escolhido assim dizemos.

Veja:

role1

Na figura acima vimos uma lista de Roles com acessos definidos nos respectivos recursos.

Vamos supor que você precise criar uma Role Customizada, criando conforme sua necessidade e associando seu time a este grupo, como fazemos ?

Usando um editor de json, usei este modelo:

json1

Pontos de atenção

Em Actions criei alguns tipos de acessos e entenda diferença como full acesso no recurso e quando temos somente leitura:

“Microsoft.Storage/*” – Permitindo acesso completo.
“Microsoft.Network/*/read” – Permitindo acesso somente leitura.
“Microsoft.Insights/diagnosticSettings/*” – No recurso Insights e em DiagnosticSettings ele tem acesso completo mais pode ter somente leitura nos demais de Microsoft.Insights.
Como adicionar a Custom Role na Sua Assinatura
  • Salvei o arquivo com a extensão CustomRole-LinuxDBStoragebackup.json
  • Loguei no Azure e selecionei minha Assinatura.
Connect-AzureRmAccount
$subscriptionId = (Get-AzureRmSubscription | Out-GridView -Title “Selecione uma Assinatura para conectar…” -PassThru).SubscriptionId
Select-AzureRmSubscription -SubscriptionId $subscriptionId
  • Executei o seguinte comando.
New-AzureRmRoleDefinition -InputFile “C:\_Azure\CustomRole-LinuxDBStoragebackup.json”
  • Executado com sucesso.
json2
  • Se for  no Portal, na Assinatura, em IAM e selecionar os grupos em Roles verá o grupo que você criou customizado, veja:
roles2
  • Agora só escolher os usuários e seguir com seu ambiente.
Este documento é mais  uma referência, modelo e passos de como criar sua custom role com json (template).
Logo abaixo vou deixar mais links de referência e material para pesquisa e demais necessidades.

Referência.:

https://docs.microsoft.com/pt-br/azure/azure-resource-manager/resource-manager-supported-services

https://docs.microsoft.com/en-us/azure/role-based-access-control/tutorial-custom-role-powershell

Lista completa do resource provider operations para montar sua lista de permissão

https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftsupport

Obrigado e até a próxima….

Conhecendo mais o Azure (Arquitetura)

Você tem dúvidas a respeito de arquitetura no Azure, modelos de arquiteturas para cada tipo de ambiente, necessidade e como implementar uma solução segura, com desempenho e alta disponibilidade ?

O Azure tem um site de documentação para isso, aonde já usei muito como base para conhecimento, implementação e treinamento.

Reuni aqui alguns links que já utilizei muito para estudo, projeto, etc.

Segue pessoal:

https://azure.microsoft.com/pt-br/solutions/architecture/

Centro de Arquitetura, aqui já algumas referências, Guia, Exemplos, Arquiteturas microserviços, arquitetura de dados, práticas recomendadas e muito mais.

https://docs.microsoft.com/pt-br/azure/architecture/

Roteiros de Aprendizagem do Azure e Arquitetura.

https://azure.microsoft.com/pt-br/training/learning-paths/azure-solution-architect/

Até a próxima…

Associando endereço IP Servidor (AD/DNS) para sua VNET no Azure e distribuindo para seu ambiente.

Interessante este Post pois vi muitas pessoas no entendimento dos ambientes em Cloud, no Azure a questão de rede, como é distribuído endereço IP, DNS e aqueles serviços que estamos acostumados em nosso ambiente on-premises. Bom montei este post para ajudar aqueles que necessitam criar uma VM com o Active Directory para seu ambiente IaaS, ingressão de servidores e resolução de nome DNS, basicamente em alguns casos replicando seu ambiente on-premises para nuvem.

É simples, aonde uma vez que você já tenha criado sua vnet, subnet, criado seu servidor e já executado os passos para tornar o mesmo um Domain Controller, siga os passos:

Navegue primeiro nas configurações da VM do AD, na Blade de Configurações, ir em Networks, depois na próxima blade ir em Network Interface e depois em IP Configurations

3

Depois clicar em ifconfig1, no meu caso podemos notar que o meu ip privado é Dinâmico, primeiro precisamos colocar ele como Static e Salvar.

4

Uma vez alterado, aonde podemos notar na imagem ir em Virtual Networks

5

Observação.: Em nenhuma hipótese altere estas informações na placa de rede do servidor.

Agora podemos ir em Virtual Networks -> Clicar na sua VNET que deseja distribuir o IP de DNS para as VMs, ir em -> DNS Servers conforme figura abaixo:

6

Selecionar Custom e digitar o IP do seu Domain Controller.

Sabemos que o Azure distribui seus endereços IP´s com base nas informações da VNET e Subnet criada, então notamos que o DNS é provido pelo Azure (opção Default). Para suas VMs neste caso, queremos prover o nosso DNS para ingressão dos servidores em nosso domínio aonde para isso temos que seguir estes passos.

Uma vez feito isso já temos resolução da VM para o Domínio:

1

Posterior conseguimos ingressar a VM no domínio criado:

2

Bom, é isso ! Em caso de dúvidas deixe seu comentário, logo mais novos posts em Azure.

Obrigado e siga meu Twitter (@UPNASCIMENTO) aonde compartilho algumas coisas de interesse ou na página, lado direito.

Alertas no Azure Monitor

Hoje em nosso post vou falar sobre os Alertas no Azure, sobre o serviço Monitor e as possibilidades que temos para monitorar nosso ambiente, seja o tipo de serviço que for necessário.

Ao acessar seu portal do Azure, se for na Blade do lado esquerdo, menu opção All Services, digitar Monitor, veja:

Monitor1

Ao abrir o Monitor podemos notar que boa parte dos recursos que temos de análise, monitoramento integra, digo que agrega aqui neste serviço, seja alertas, seja Metrics, seu próprio OMS (Log Analytics), Service Health, enfim uma gama de possibilidades. Eu utilizo muito pois pego estes monitoramentos e coloco no Dashboard assim tenho um Painel bacana de monitoramento.

Monitor 2

Em nosso caso vou mostrar como criar um alerta para monitorar suas máquinas virtuais, podendo ser todos ou quais escolher.

Criar um Alertas do lado esquerdo e ir na opção New Alert Rule

Monitor3

Você deve selecionar o alvo (Target), filtrando a Subscription (Assinatura) e o recurso que queria gerar o alerta. Neste caso selecionamos a máquina virtual, assim irá trazer os alertas para este recurso.

Monitor4

Agora selecionar o critério, baseado Active Log, você pode ver as possibilidades de recursos para quais pode criar alertas, neste caso vamos pesquisar CPU:

Monitor5

Escolhemos CPU e os detalhes do alerta, aonde temos até severidade:

Monitor7

Definimos por último Action Group, neste caso temos diversas possibilidades, aonde vou optar por alertar por SMS e E-mail.

Monitor8

Pronto, clicando no OK, selecionando o Action Group que criamos, basta clicar em Create alert Rule e temos nosso alerta criado.

Monitor9

É isso pessoal, vimos como criar um Alerta e as possibilidades que temos com monitoramento no Azure.

Obrigado !

 

Benefício Híbrido do Azure com PowerShell

Olá Pessoal ! Tudo bem ?

Este artigo é voltado para explicar um pouco o beneficio HUB  no Azure, também como aplicar este item quando já temos as máquinas virtuais criadas. Na criação de uma máquina virtual pelo portal, você pode já selecionar esta opção, recurso, já aplicando à mesma, porém tem casos em que a máquina virtual já está criada e você precisa converter para utilizar este benefício, que neste caso é possível sim.

Vejo muito assunto falando sobre o beneficio HUB no Azure, que nada mais é para empresas que possuem licenças locais do Windows Server com o Software Assurance. Com isso você só pagara pelos custos básicos da computação em Cloud (Azure).

Vamos ver na prática….

No portal do Azure, em Virtual Machines, você pode visualizar se as VMs estão com o recurso aplicado, uma vez indo Edit columms e selecionando Azure hybrid, aonde na visualizações das informações de cada irá ver se o recurso está aplicado a VM, conforme imagem abaixo:

1

Como podemos ver o recurso aplicado via PowerShell ? Primeiramente logar no Azure e selecionar assinatura, vide:

Login-AzureRmAccount
# Selecionar Assinatura Azure (subscription)
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Selecionar sua Assinatura do Azure …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId

Neste powershell abaixo damos um Get nas VMs ou podemos afinar, dando um GET  nas VMs com base em Resource Group

$vms = Get-AzurermVM
$vms = Get-AzureRmVM -ResourceGroup $rgName 
foreach ($vm in $vms)
{
“VM Name: ” + $vm.Name, ” Azure hybrid Benefit for Windows Server : ” + $vm.LicenseType
}

No Foreach listamos a partir do GET as máquinas virtuais e mostramos quais benefícios quais estão aplicados ou não “Windows Server”, que é o Beneficio HUB aplicado.

Para aplicar o beneficio na VM, basta usar os comandos abaixo:

$rgName = “Nome do Resource Group”
$vmName = “Nome da VM”
$vm = Get-AzureRmVM -ResourceGroup $rgName -Name $vmName
$vm.LicenseType = “Windows_Server”
Update-AzureRmVM -ResourceGroupName $rgName -VM $vm

Bom é isso pessoal… abraços !

Referência:

https://azure.microsoft.com/en-us/pricing/hybrid-benefit/
https://docs.microsoft.com/en-us/windows-server/get-started/azure-hybrid-benefit

 

Camada de serviço e aplicação falando via MSDTC com banco de dados SQL (Troubleshooting)

Pessoal, recentemente tive uma atuação em um problema antigo na empresa que trabalho, aonde a camada de serviço de uma determinada aplicação, através do MSDTC do Windows fala com a camada também configurada no banco (receptor) e que abre conexão com o banco.

The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems.
Possible causes are: a firewall is present and it doesn’t have an exception for the MSDTC process,
the two machines cannot find each other by their NetBIOS names,
or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02B)

Possible causes are: a firewall is present and it doesn’t have an exception for the MSDTC process,

Alguns pontos para se analisar

Habilitar MSDTC e as configurações necessárias, indo em Component Services -> Computers -> My Computer -> Distributed Transaction e Local DTC
Clicando com o botão direto e em propriedades:

DTC

Ir no Firewall do Windows liberando aplicação:

Control Panel\All Control Panel Items\Windows Firewall\Allowed apps

allow_DTC

Quer validar se permite conexão MSDTC, veja via PowerShell:

ImageDTC

Um ponto importante é quando temos um firewall, pensamos como liberar as portas necessárias para esta conexão uma vez que usa um range de portas, portas dinâmicas, etc ? Bom, fiz uma pesquisa de vários artigos na Internet e notei que as portas basicamente pelo que falam são estas :

RPC PORT RANGE (49152 A 65535)
Custom RPC UX (5000-6000 / TCP/UDP)
RPC EndPoint Mapper Service (TCP 135)
Security Port 88 (TCP/UDP) – Kerberos
NETBIOS (UDP/137, UDP/138 e UDP/139)
SQL 1433

Porta 135 (RPC, tcp/udp)

1

1433 (SQL)

2

3

Utilizei o DTCPing ( Download -> https://www.microsoft.com/en-us/download/details.aspx?id=2868) para gerar os pacotes acima.

Neste cenário tinha um ambiente com firewall, regra NAT, então tudo isso é importante você conhecer em infraestrutura, como exemplo de nosso cenário e necessidades:

Capturar

Pode-se notar a camada de serviço no Azure fazendo conexão em outro DataCenter

Necessário setar um range específico para conexão MSDTC via registry (Salve como .reg e execute em ambos servidores)

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet]
“PortsInternetAvailable”=”Y”
“UseInternetPorts”=”Y”
“Ports”=hex(7):35,00,30,00,30,00,31,00,2d,00,36,00,30,00,30,00,30,00,00,00,00,\
00,00,00

Novo .reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC]
“EnableAuthEpResolution”=dword:00000001
“RestrictRemoteClients”=dword:00000000

Com isso vai notar que as portas de conexão MSDTC serão deste range, podendo facilitar a criação de regra no Firewall:

fw

Basicamente, as portas necessárias para serem liberadas em ambos os lados, seja no Azure no NSG, ou no Firewall do DataCenter são:

Custom RPC UX (5000-6000 / TCP/UDP)
RPC EndPoint Mapper Service (TCP 135)
SQL 1433

Uma vez feito estas liberações e configurações do MSDTC em ambas as pontas, igualmente será feito conexão com sucesso e inclusive em testes pelos DTCPing:

ab

Observação: Lembre de abrir em ambas as pontas o DTCPing antes de gerar um teste.

 

Referência:

Store Procedure para RPC Request (https://msdn.microsoft.com/en-us/library/dd357576.aspx )

SQLBatch, descreve o formato SQL Batch Message (https://msdn.microsoft.com/en-us/library/dd358575.aspx )

Transaction Manager Request (https://msdn.microsoft.com/en-us/library/dd339887.aspx )

 

Obrigado pessoal e até a próxima….