6.2 Control access
Leverage service principles with ARM authentication, use Azure Active Directory Authentication with ARM, set management policies, lock resources
6.2.1 Leverage service principles with ARM authentication
Når du har en applikasjon eller et Script som trenger tilgang til ressurser, kan vi sette opp en egen identitet for denne applikasjonen. Denne identiteten vi kaller Service Principles, og gjør at vi kan autentisere oss basert på egne Credentials.
Det første vi må gjøre er å opprette en egen Azure App.
Når vi har opprettet denne må vi huske Application ID. Neste steg er å gå under Keys og opprette en Application Key. Denne må vi også huske.
Deretter må vi finne frem Tenant ID under Azure Active Directory og Properties.
Siste steg er å tildele rettigheter for applikasjonen på Azure Subscription. I Azure finnes det en rekke innebygde roller. For mer om de ulike rollene kan man se RBAC in Azure. Jeg satt opp at Applikasjonen skulle få Read-rettigheter.
Da gjenstår det å se om vi klarer å logge inn med applikasjonen MastechApp01. Nå er det vi trenger de verdiene vi tidligere skulle huske.
Application ID: Brukernavn under Get-Credential
Application Key: Passord under Get-Credential
Tenant ID: Skriver inn som verdi for parameter -TenantId
$TenantID = <TenantId>
$Credentials = (Get-Credential)
Login-AzureRmAccount -Credential $Credentials -ServicePrincipal -TenantId $TenantID
Vi kan se at jeg logger meg på, men får ikke lov til å kjøre kommandoer, siden jeg ikke har nok rettigheter.
Azure Portal: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal#required-permissions Windows PowerShell: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal
6.2.2 Use Azure Active Directory Authentication with ARM
Jeg er usikker på hva de mener med dette punktet, men ville lest på denne: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-api-authentication
6.2.3 Set management policies
Resource policies enable you to establish conventions for resources in your organization. By defining conventions, you can control costs and more easily manage your resources. For example, you can specify that only certain types of virtual machines are allowed. Or, you can require that all resources have a particular tag. Policies are inherited by all child resources. So, if a policy is applied to a resource group, it is applicable to all the resources in that resource group.
Vi kan altså implementere Policy på flere nivåer (Subscription, Resource Group, Resource) for å kunne styre vår Azure Tenant. Vi deler inn Policy i to hovedpunkter:
- Policy Definition: Beskriver når en Policy "treffer" og hvilken tiltak man skal gjøre.
- Policy Assignment: Hvilket nivå eller omfang Policy skal påvirke.
Forskjellen mellom RBAC og Policy er at Policy fokuserer på Resources og ikke Users. Det finnes en rekke innebygde Policy-er som vi kan benytte, og vi kan lage egne. Dette er mulig å både gjøre gjennom Azure Portal eller Scripts.
Resource policy overview: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-policy
6.2.3.1 Azure Portal
Her har jeg opprettet en Policy som treffer alle ressurser i Resource Group MT-LAB-01. Policy sier at man skal legge til Tag Mastech på alle ressurser. Et lite eksempel, men man har mange muligheter og stor fleksibilitet.
Azure Portal: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-policy-portal
6.2.3.2 Azure Scripts
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-policy-create-assign
6.2.4 Lock resources
As an administrator, you may need to lock a subscription, resource group, or resource to prevent other users in your organization from accidentally deleting or modifying critical resources. You can set the lock level to CanNotDelete or ReadOnly.
Vi kan altså låse ned ressurser i Azure, slik ikke man uheldigvis ender opp med å slette viktige ressurser. For å kunne sette opp dette må man være enten Owner and User Access Administrator.
Azure Portal: Under Settings på Subscription, Resource Group eller Resource kan vi velge Locks.
ARM Template: Kan vi spesifisere under Provider som f.eks Microsoft.Storage/storageaccounts/providers/locks
"resources": [
{
"name": "[concat(parameters('lockedResource'), '/Microsoft.Authorization/myLock')]",
"type": "Microsoft.Storage/storageAccounts/providers/locks",
"apiVersion": "2015-01-01",
"properties": {
"level": "CannotDelete"
}
}
]
PowerShell: Benytter vi kommandoen New-AzureRmResourceLock
# Eksempel på å sørge for at en Resource Group ikke kan slettes.
New-AzureRmResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup
Lock resources to prevent unexpected changes: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-lock-resources