Azure CLI를 사용하는 Azure Database for MySQL - 유연한 서버에 대한 데이터 암호화
적용 대상: Azure Database for MySQL - 유연한 서버
이 자습서에서는 Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버에 대한 데이터 암호화를 설정하고 관리하는 방법을 보여 줍니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 데이터 암호화를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스 만들기
- 데이터 암호화를 사용하여 기존 Azure Database for MySQL 유연한 서버 인스턴스 업데이트
- Azure Resource Manager 템플릿을 사용하여 데이터 암호화 사용
필수 조건
활성 구독이 있는 Azure 계정.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
참고 항목
Azure 무료 계정을 사용하면 이제 12개월 동안 Azure Database for MySQL 유연한 서버를 무료로 사용해 볼 수 있습니다. 자세한 내용은 Azure Database for MySQL 유연한 서버를 무료로 사용해 보기를 참조하세요.
Azure CLI를 설치하거나 최신 버전으로 업그레이드합니다. Azure CLI 설치를 참조하세요.
az login 명령을 사용하여 Azure 계정에 로그인합니다. Azure 계정의 구독 ID를 나타내는 ID 속성에 유의합니다.
az login
- 구독이 여러 개인 경우 az account set 명령을 사용하여 서버를 만들려는 적절한 구독을 선택합니다.
az account set --subscription \<subscription id\>
- Azure Key Vault에서 키 자격 증명 모음 또는 관리되는 HSM과 키를 만듭니다. 고객 관리형 키로 사용하려면 키 자격 증명 모음 또는 관리되는 HSM에 다음 속성이 있어야 합니다.
az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true
보존 일수를 90일로 설정:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
고객 관리형 키로 사용하려면 키에 다음 특성이 있어야 합니다.
- 만료 날짜 없음
- 사용 안 함 없음
- 나열, 가져오기, 래핑, 래핑 해제 작업 수행
- recoverylevel 특성이 복구 가능으로 설정됨(보존 기간이 90일로 설정된 일시 삭제를 사용해야 함)
- 제거 보호 사용
다음 명령을 사용하여 키의 특성을 확인할 수 있습니다.
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
데이터 암호화를 사용하여 기존 Azure Database for MySQL 유연한 서버 인스턴스 업데이트
데이터 암호화에 대한 키 및 ID를 설정하거나 변경합니다.
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Azure Database for MySQL 유연한 서버에 대한 데이터 암호화를 사용하지 않도록 설정:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
지역 중복 백업 및 데이터 암호화를 사용하도록 설정된 Azure Database for MySQL 유연한 서버 인스턴스 만들기
az mysql flexible-server create -g testGroup -n testServer --location testLocation \\
--geo-redundant-backup Enabled \\
--key <key identifier of testKey> --identity testIdentity \\
--backup-key <key identifier of testBackupKey> --backup-identity testBackupIdentity
지역 중복 백업을 사용하여 데이터 암호화에 대한 키, ID, 백업 키 및 백업 ID를 설정하거나 변경합니다.
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity \\ --backup-key \<key identifier of newBackupKey\> --backup-identity newBackupIdentity
Azure Resource Manager 템플릿을 사용하여 데이터 암호화 사용
params identityUri 및 primaryKeyUri는 각각 사용자 관리 ID 및 사용자 관리형 키의 리소스 ID입니다.
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"administratorLogin": {
"type": "string"
},
"administratorLoginPassword": {
"type": "securestring"
},
"location": {
"type": "string"
},
"serverName": {
"type": "string"
},
"serverEdition": {
"type": "string"
},
"vCores": {
"type": "int",
"defaultValue": 4
},
"storageSizeGB": {
"type": "int"
},
"haEnabled": {
"type": "string",
"defaultValue": "Disabled"
},
"availabilityZone": {
"type": "string"
},
"standbyAvailabilityZone": {
"type": "string"
},
"version": {
"type": "string"
},
"tags": {
"type": "object",
"defaultValue": {}
},
"backupRetentionDays": {
"type": "int"
},
"geoRedundantBackup": {
"type": "string"
},
"vmName": {
"type": "string",
"defaultValue": "Standard_B1ms"
},
"storageIops": {
"type": "int"
},
"storageAutogrow": {
"type": "string",
"defaultValue": "Enabled"
},
"autoIoScaling": {
"type": "string",
"defaultValue": "Disabled"
},
"vnetData": {
"type": "object",
"metadata": {
"description": "Vnet data is an object which contains all parameters pertaining to vnet and subnet"
},
"defaultValue": {
"virtualNetworkName": "testVnet",
"subnetName": "testSubnet",
"virtualNetworkAddressPrefix": "10.0.0.0/16",
"virtualNetworkResourceGroupName": "[resourceGroup().name]",
"location": "eastus2",
"subscriptionId": "[subscription().subscriptionId]",
"subnetProperties": {},
"isNewVnet": false,
"subnetNeedsUpdate": false,
"Network": {}
}
},
"identityUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the identity used for data encryption"
}
},
"primaryKeyUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the key used for data encryption"
}
}
},
"variables": {
"api": "2021-05-01",
"identityData": "[if(empty(parameters('identityUri')), json('null'), createObject('type', 'UserAssigned', 'UserAssignedIdentities', createObject(parameters('identityUri'), createObject())))]",
"dataEncryptionData": "[if(or(empty(parameters('identityUri')), empty(parameters('primaryKeyUri'))), json('null'), createObject('type', 'AzureKeyVault', 'primaryUserAssignedIdentityId', parameters('identityUri'), 'primaryKeyUri', parameters('primaryKeyUri')))]"
},
"resources": [
{
"apiVersion": "[variables('api')]",
"location": "[parameters('location')]",
"name": "[parameters('serverName')]",
"identity": "[variables('identityData')]",
"properties": {
"version": "[parameters('version')]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"Network": "[if(empty(parameters('vnetData').Network), json('null'), parameters('vnetData').Network)]",
"Storage": {
"StorageSizeGB": "[parameters('storageSizeGB')]",
"Iops": "[parameters('storageIops')]",
"Autogrow": "[parameters('storageAutogrow')]",
"AutoIoScaling": "[parameters('autoIoScaling')]"
},
"Backup": {
"backupRetentionDays": "[parameters('backupRetentionDays')]",
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
},
"availabilityZone": "[parameters('availabilityZone')]",
"highAvailability": {
"mode": "[parameters('haEnabled')]",
"standbyAvailabilityZone": "[parameters('standbyAvailabilityZone')]"
},
"dataEncryption": "[variables('dataEncryptionData')]"
},
"sku": {
"name": "[parameters('vmName')]",
"tier": "[parameters('serverEdition')]",
"capacity": "[parameters('vCores')]"
},
"tags": "[parameters('tags')]",
"type": "Microsoft.DBforMySQL/flexibleServers"
}
]
}