Python Azure sdk - Включение шифрования диска - PullRequest
0 голосов
/ 17 января 2020

во время поиска в stackoverflown и github для получения любой информации о - "Как можно go об использовании python для шифрования всех дисков в его / ее подписке"?

В итоге я обнаружил ЭТО , но что меня действительно портит, так это как go импортирует такой класс? Если это нужно импортировать вообще.

Это то, что я пробовал до сих пор.

Чтобы перечислить все виртуальные машины

from azure.common.credentials import ServicePrincipalCredentials
credentials = ServicePrincipalCredentials(
client_id = CLIENT,
secret = KEY,
tenant = TENANT_ID)

compute_client = ComputeManagementClient(credentials, subscription_id) # Variables are provided before, along with the data that fills the credentials Dict.

for vm in compute_client.virtual_machines.list_all():
    print("\tVM: {}".format(vm.name))

Так что это подводит меня к моей проблеме. Теперь, когда у меня есть объект "vm", я должен быть в состоянии получить всю необходимую информацию (теоретически), чтобы завершить sh мою задачу.

Но как же я могу сделать это go, используя DiskEncryptionSetsOperations учебный класс? Я инициализирую это? Я импортирую это?

1 Ответ

0 голосов
/ 20 января 2020

Относительно того, как зашифровать Azure диск VM, пожалуйста, обратитесь к следующим шагам

az login

az keyvault create --name 'testdisk' --resource-group 'testvm1' --location 'centralus' --enabled-for-disk-encryption true --enabled-for-deployment true --enabled-for-template-deployment true
az keyvault key create --name diskery --vault-name testdisk --kty RSA

enter image description here

Код
import uuid
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.compute.models import VirtualMachineExtension
from msrestazure.tools import parse_resource_id

AZURE_TENANT_ID= ''
AZURE_CLIENT_ID=''
AZURE_CLIENT_SECRET='' 
AZURE_SUBSCRIPTION_ID=''

credentials = ServicePrincipalCredentials(client_id=AZURE_CLIENT_ID,secret=AZURE_CLIENT_SECRET,tenant=AZURE_TENANT_ID)
compute_client = ComputeManagementClient(credentials, AZURE_SUBSCRIPTION_ID)
resource_group_name='testvm1'
vm_name='test03'
vm =compute_client.virtual_machines.get(resource_group_name,vm_name)
parts = parse_resource_id(vm.id)
KeyVaultResourceId='/subscriptions/<your subscription id>/resourceGroups/<group name>/providers/Microsoft.KeyVault/vaults/<your key vault name>'
KeyEncryptionKeyURL='https://<your key vault name>.vault.azure.net/keys/<name>/<version>'
KeyVaultURL='https://<your key vault name>.vault.azure.net/'

# we are ready to provision/update the disk encryption extensions
os_type = vm.storage_profile.os_disk.os_type.value 
sequence_version = uuid.uuid4()
public_settings={"EncryptionOperation": 'EnableEncryption',
          "KeyVaultURL": KeyVaultURL,
          "KeyVaultResourceId": KeyVaultResourceId,
          "KeyEncryptionKeyURL": KeyEncryptionKeyURL,
          "KekVaultResourceId": KeyVaultResourceId,
          "KeyEncryptionAlgorithm": 'RSA-OAEP',
          "VolumeType": 'ALL',
          'SequenceVersion': sequence_version,
        }

if(os_type.lower() =='windows') :
    ext= VirtualMachineExtension(
           location=vm.location,
           publisher='Microsoft.Azure.Security',
           virtual_machine_extension_type='AzureDiskEncryption',
           type_handler_version='2.2',
           auto_upgrade_minor_version=True,
           settings=public_settings,
           protected_settings=None



    )
    poller  =compute_client.virtual_machine_extensions.create_or_update(parts['resource_group'],parts['name'],'test',ext)

else :
    ext= VirtualMachineExtension(
           location=vm.location,
           publisher='Microsoft.Azure.Security',
           virtual_machine_extension_type='AzureDiskEncryptionForLinux',
           type_handler_version='1.1',
           auto_upgrade_minor_version=True,
           settings=public_settings,
           protected_settings=None



    )
    poller  =compute_client.virtual_machine_extensions.create_or_update(parts['resource_group'],parts['name'],'test',ext)



# verify the extension was ok
extension_result = compute_client.virtual_machine_extensions.get(
        parts['resource_group'],parts['name'],'test', 'instanceView')
if extension_result.provisioning_state != 'Succeeded':
    print('Extension needed for disk encryption was not provisioned correctly')
print("success")

enter image description here Для получения более подробной информации, пожалуйста, обратитесь к

https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/azure-disk-enc-windows

https://docs.microsoft.com/en-us/azure/security/fundamentals/azure-disk-encryption-vms-vmss

...