PowerShell ile Azure Key Vault Access Policy Yonetimi

Bir Azure Key Vault icindeki Access Policy’lerde degisiklik yaparak, bir kisiye, gruba ya da uygulamaya erisim yetkisi verebiliriz. Bunun icin asagidaki komutu calistirabiliriz. Ben kendi ornegimde octopus adindaki Azure AD uygulamama yetki vermek istedim. Secret, Certificate, Keys ve Managed Storage uzerinde “full” yetki verdim. Evet biraz bonkor davrandim bugun!

Siz de ServicePrincipalName parametresi icin kendi AAD uygulamanizin ApplicationID’sini yazabilirsiniz.

Set-AzKeyVaultAccessPolicy -VaultName testvault2000 -ResourceGroupName keyvaults -ServicePrincipalName “c2e46ff8-cdc6-4c0b-a593-74fcda3657aa” -PermissionsToKeys all -PermissionsToSecrets all -PermissionsToCertificates all -PermissionsToStorage all

Asagidaki komutla yaptigim degisikligi goruntuleyebilirim

Get-AzKeyVault -VaultName testvault2000

Azure Portal icinden de bu degisikligi dogrulayabiliriz.

Continue Reading PowerShell ile Azure Key Vault Access Policy Yonetimi

PowerShell ile Mevcut Bir Automation Account Icerisine Yeni Bir Runbook Eklemek

Yeni bir Runbook ihtiyaciniz var. Bir de daha onceden yazdiginiz kodun Runbook icinde calismasini istiyorsunuz. Kolay.

Import-AzAutomationRunbook -ResourceGroupName demo
-AutomationAccountName AuatomationAccount1 -Path "D:\Temp\runbook1.ps1"
-Type PowerShell -Name YeniRunbook
-Force

Unutmayalim ki, yukaridaki komut bir Import komutu. Yani aslinda yeni bir runbook olusturmaktan tek farki, size daha onceden yazdiginioz kodu ekleme olanagi vermesi. Yani ayni isimle bos bir runbook olusturma komutunu kullansam hata alirim. Hatta buyrun hata alalim.

New-AzAutomationRunbook -Name 'YeniRunbook'
-Type PowerShell -ResourceGroupName demo
-Description ‘Yepisyeni’ `
-AutomationAccountName AuatomationAccount1

Continue Reading PowerShell ile Mevcut Bir Automation Account Icerisine Yeni Bir Runbook Eklemek

PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

Azure icindeki abonelikleri, yonetimsel kolaylik ve Policy uygulama noktasindaki avantajlari sebebiyle Management Group’lar icine yerlestirebiliyoruz. Peki buyuk organizasyonlarda Azure Portal icinden rahatlikla listeyebildigimiz bu abonelikleri PowerShell ile nasil listeyebiliriz? Yani belirli bir Management Group icindeki abonelikleri nasil ekrana yazdirabiliriz? Gorelim!

Once butun abonelikleri, icinde bulunduklari Management Group bilgisine gore listeleyelim. Malum, bazen ic ice gecmis management group yapisi kullaniyoruz ve bir abonelik derinlerde bir management group icinde yer alabiliyor.

$sorgu = “
resourcecontainers
| where type == ‘microsoft.resources/subscriptions’

$cevap = Search-AzGraph -Query $sorgu
$cevap | select name,id,@{l=”managementgroup”;e={$_.properties.managementGroupAncestorsChain.displayname}}

Peki ben sadece spesifik Manegement Group icindeki abonelikleri goruntulemek istiyorsam. Yani bana yukaridan asagiya kadar butun management group bilgisi lazim degilse? O zaman da yontem su sekilde!

$managementGroup = “Prod”
$sorgu = “
resourcecontainers
| where type == ‘microsoft.resources/subscriptions’
| where properties.managementGroupAncestorsChain[0].displayName == ‘$managementGroup’
| project ParentManagementGroup = properties.managementGroupAncestorsChain[0].displayName, name, id

$cevap = Search-AzGraph -Query $sorgu
$cevap | select name, id, ParentManagementGroup

Continue Reading PowerShell ile Azure Management Group altindaki Abonelikleri Listelemek

PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

Azure Policy’leri “Get-AzPolicyDefinition” komutuyla listelemek istedigimizde maalesef Policy ismini anlasilir bir sekilde gelmiyor.

Bunun icin asagidaki komutu kullanarak “DisplayName” bilgisini yazdirabiliriz.

Get-AzPolicyDefinition | select -ExpandProperty properties | select DisplayName

Continue Reading PowerShell ile Azure Policy Definition Detaylarinin Listelenmesi

PowerShell ile Azure KeyVault icindeki Secret icerigini Yazdirmak

Bir Key Vault icindeki Secret’in icerigini ekrana yazdirmak icin asagidaki komutu kullanabiliriz.

Oncesinde Secret detayini almak istedigimizde ne oluyor ona bakalim. Asagidaki komut bize icerik disinda her seyi veriyor ama Secret icerigi yok.

Buradaki onemli ayrinti “-AsPlainText” parametresi. Bu sayede Secret icerigini okuyabiliyoruz.

Get-AzKeyVaultSecret -VaultName testvault2000 -Name testsecret -AsPlainText

Continue Reading PowerShell ile Azure KeyVault icindeki Secret icerigini Yazdirmak

PowerShell ile Azure Policy’lerin bir Resource Group icin Uygulanmasi

Oncelikle hangi Policy Definition’in uygulanmasini isteidigimize karar verelim. Bunu icin var olan Policy Definition’lari bir listeleyelim.

Get-AzPolicyDefinition | select -ExpandProperty Properties | select displayname

Yukaridaki komutun listeledigi Policy Definition’lardan hangisini uygulayacaksak tam ismini not edelim.

Sonra da ornek “demo” isimli Resource Group uzerinde bu Policy’yi uygulayalim.

Ben kendi ornegimde “Azure Backup should be enabled for Virtual Machines” isimli Policy Definition’i “demo” isimli RG uzerinde uygulayacagim.

$ResourceGroup = Get-AzResourceGroup -Name ‘demo’

$ResourceGroup = Get-AzResourceGroup -Name ‘demo’
$Policy = Get-AzPolicyDefinition | where{$psitem.properties.displayname -eq ‘Azure Backup should be enabled for Virtual Machines’}
New-AzPolicyAssignment -Name ‘VMler uzerinde yedekleme ozelligi acik olsun’ -PolicyDefinition $Policy -scope $ResourceGroup.ResourceId

Continue Reading PowerShell ile Azure Policy’lerin bir Resource Group icin Uygulanmasi

PowerShell ile Mevcut Bir Vnet icine Yeni Bir Address Space ve Subnet Eklemek

Mevcut durumdaki Virtual Network’unuze yeni bir adres blogu eklemek ve bu yeni blok icinden yeni bir subnet olusturmak isterseniz asagiki komutlari kullanabilirsiniz.

$vnet = Get-AzVirtualNetwork -Name hub-vnet -ResourceGroupName hub-network
$vnet.AddressSpace.AddressPrefixes.Add(“20.0.0.0/8”)
$YeniSubnet = New-AzVirtualNetworkSubnetConfig -Name YeniSubnet -AddressPrefix “20.1.2.0/24”
$vnet.Subnets.Add($YeniSubnet)
$vnet | Set-AzVirtualNetwork

Sonuc asagidaki gibi

Continue Reading PowerShell ile Mevcut Bir Vnet icine Yeni Bir Address Space ve Subnet Eklemek

PowerShell ile App Service Metric bilgisini yazdirmak

Ornegin bir rapor hazirlamak istesek.. Bu raporda, butun abonelilklerdeki butun App Service Plan kaynaklarinin (ASP) son 10 gun icindeki Memory ve CPU degerlerinin ortalamasi olsa. Nasil olur? Bence guzel olur. Nasil mi? Iste boyle

$data = @()
$data+=”subname, starttime,endtime,aspname,cpupercentage,memorypercentage”

$startTime = “2021-01-21T00:00”
$endTime = “2021-02-21T00:00”

$subs = (Get-AzSubscription)

foreach($sub in $subs){

select-azsubscription -SubscriptionID $sub.ID

$subname = $sub.name

$ASPs = Get-AzAppServicePlan

foreach($asp in $ASPs){
$ID = $asp.ID
$aspName = $asp.name

$CPUPercentage = (Get-AzMetric -ResourceId “$ID” -TimeGrain 00:01:00 -StartTime $startTime -EndTime $endTime -MetricName “CPUPercentage” -DetailedOutput | select -ExpandProperty data | measure average -Average).AVERAGE

$MemoryPercentage = (Get-AzMetric -ResourceId “$ID” -TimeGrain 00:01:00 -StartTime $startTime -EndTime $endTime -MetricName “MemoryPercentage” -DetailedOutput | select -ExpandProperty data | measure average -Average).AVERAGE

$data += “$subname, $starttime, $endtime, $aspname, $cpupercentage, $memorypercentage”

}

}

$data | ft

$outputstarttime = $startTime.replace(“:”,”“) $outputendtime = $endTime.replace(“:”,”“)
$reportName = “AppService_memory_CPU_raporu”

$outputfilename = “./temp/”+$reportName+”“+$outputstarttime+”“+$outputendtime+”.csv”

$data | out-file $outputfilename

Sonuc asagidaki gibi olur. Tabi benim demo ortamimda sadece 1 tane App Service Plan oldugu icin rapor cok heybetli durmadi 🙂

Continue Reading PowerShell ile App Service Metric bilgisini yazdirmak

PowerShell ile Azure Uzerinde Access Token Uretmek ve REST API Call Icinde Kullanmak

Ozellikle Powershell icindenAzure REST API kullanarak islemler yapmak istediginizde ve oncelikle kimlik dogrulama sureci kapsaminda “token” almaniz gerektiginde, asagidaki komut imdadiniza yetisecektir. Token almak icin bir cok yontem var elbette. Ne tip bir hesap kullanarak token almaya calistiginiz ya da alinacak token’in cinsi bu noktada onemli. Biz kendi kullanici hesabimiz icin token alacagiz. Token tipi “Bearer”

Buna guzel bir ornek verelim oyleyse. Meslea bir abonelik icindeki butun KeyVault kaynaklarini REST APi ve elbette az once aldigimiz token ile listeyelim.

$token = (Get-AzAccessToken).token

$headers = @{
‘Authorization’ = “Bearer $token”
}

$uri = “https://management.azure.com/subscriptions/xxxxxx-xxxxxxx-xxxxxxx-xx/providers/Microsoft.KeyVault/vaults?api-version=2021-10-01”

Invoke-RestMethod -Method Get -Uri $uri -Headers $Headers -ContentType “application/json” | select -ExpandProperty value | select name

Continue Reading PowerShell ile Azure Uzerinde Access Token Uretmek ve REST API Call Icinde Kullanmak