자습서: Azure Resource Manager 템플릿 배포에서 아티팩트 보호Tutorial: Secure artifacts in Azure Resource Manager template deployments

SAS(공유 액세스 서명)가 포함된 Azure Storage 계정을 사용하여 Azure Resource Manager 템플릿에서 사용된 아티팩트를 보호하는 방법에 대해 알아봅니다.Learn how to secure the artifacts used in your Azure Resource Manager templates using Azure Storage account with shared access signatures (SAS). 배포 아티팩트는 배포를 완료하는 데 필요한 기본 템플릿 파일 이외의 모든 파일입니다.Deployment artifacts are any files, in addition to the main template file, that are needed to complete a deployment. 예를 들어 자습서: Azure Resource Manager 템플릿을 사용하여 SQL BACPAC 파일 가져오기에서 기본 템플릿은 Azure SQL Database를 만듭니다. 또한 BACPAC 파일을 호출하여 테이블을 만들고 데이터를 삽입합니다.For example, in Tutorial: Import SQL BACPAC files with Azure Resource Manager templates, the main template creates an Azure SQL Database; it also calls a BACPAC file to create tables and insert data. BACPAC 파일은 아티팩트입니다.The BACPAC file is an artifact. 아티팩트는 공용 액세스를 사용하여 Azure Storage 계정에 저장됩니다.The artifact is stored in an Azure storage account with public access. 이 자습서에서는 SAS를 사용하여 고유한 Azure Storage 계정에서 BACPAC 파일에 대한 제한된 액세스 권한을 부여합니다.In this tutorial, you use SAS to grant limited access to the BACPAC file in your own Azure Storage account. SAS에 대한 자세한 내용은 SAS(공유 액세스 서명) 사용을 참조하세요.For more information about SAS, see Using shared access signatures (SAS).

연결된 템플릿을 보호하는 방법을 알아보려면 자습서: 연결된 Azure Resource Manager 템플릿 만들기를 참조하세요.To learn how to secure linked template, see Tutorial: Create linked Azure Resource Manager templates.

이 자습서에서 다루는 작업은 다음과 같습니다.This tutorial covers the following tasks:

  • BACPAC 파일 준비Prepare a BACPAC file
  • 기존 템플릿 열기Open an existing template
  • 템플릿 편집Edit the template
  • 템플릿 배포Deploy the template
  • 배포 확인Verify the deployment

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.

필수 조건Prerequisites

이 문서를 완료하려면 다음이 필요합니다.To complete this article, you need:

BACPAC 파일 준비Prepare a BACPAC file

이 섹션에서는 Resource Manager 템플릿을 배포하는 경우 파일에 안전하게 액세스할 수 있도록 BACPAC 파일을 준비합니다.In this section, you prepare the BACPAC file so the file is accessible securely when you deploy the Resource Manager template. 이 섹션에는 다섯 개의 프로시저가 있습니다.There are five procedures in this section:

  • BACPAC 파일 다운로드Download the BACPAC file.
  • Azure Storage 계정 만들기Create an Azure Storage account.
  • Storage 계정 Blob 컨테이너 만들기Create a Storage account Blob container.
  • 컨테이너에 BACPAC 파일 업로드Upload the BACPAC file to the container.
  • BACPAC 파일의 SAS 토큰 검색Retrieve the SAS token of the BACPAC file.

PowerShell 스크립트를 사용하여 이러한 단계를 자동화하려면 연결된 템플릿 업로드의 스크립트를 참조하세요.To automate these steps using a PowerShell script, see the script from Upload the linked template.

BACPAC 파일 다운로드Download the BACPAC file

BACPAC 파일을 다운로드하고 SQLDatabaseExtension.bacpac라는 동일한 이름으로 로컬 컴퓨터에 파일을 저장합니다.Download the BACPAC file, and save the file to your local computer with the same name, SQLDatabaseExtension.bacpac.

저장소 계정 만들기Create a storage account

  1. 다음 이미지를 선택하여 Azure Portal에서 Resource Manager 템플릿을 엽니다.Select the following image to open a Resource Manager template in the Azure portal.

    Deploy to Azure

  2. 다음과 같은 속성을 입력합니다.Enter the following properties:

    • 구독: Azure 구독을 선택합니다.Subscription: Select your Azure subscription.
    • 리소스 그룹: 새로 만들기를 선택하고 이름을 지정합니다.Resource Group: Select Create new and give it a name. 리소스 그룹은 관리용인 Azure 리소스에 대한 컨테이너입니다.A resource group is a container for Azure resources for the management purpose. 이 자습서에서는 스토리지 계정 및 Azure SQL Database에 동일한 리소스 그룹을 사용할 수 있습니다.In this tutorial, you can use the same resource group for the storage account and the Azure SQL Database. 이 리소스 그룹 이름을 메모해두세요. 자습서의 뒷부분에 나오는 Azure SQL Database를 만들 때 필요합니다.Make a note of this resource group name, you need it when you create the Azure SQL Database later in the tutorials.
    • 위치: 지역을 선택합니다.Location: Select a region. 예: 미국 중부For example, Central US.
    • 스토리지 계정 형식: Standard_LRS라는 기본값을 사용합니다.Storage Account Type: use the default value, which is Standard_LRS.
    • 위치: [resourceGroup().location] 이라는 기본값을 사용합니다.Location: Use the default value, which is [resourceGroup().location]. 즉, 스토리지 계정에 리소스 그룹 위치를 사용합니다.That means you use the resource group location for the storage account.
    • 위에 명시된 사용 약관에 동의함: (선택됨)I agree to the terms and conditions started above: (selected)
  3. 구매를 선택합니다.Select Purchase.

  4. 배포 상태를 확인하기 위해 포털의 오른쪽 위 모서리에서 알림 아이콘(벨 아이콘)을 선택합니다.Select the notification icon (the bell icon) on the upper right corner of the portal to see the deployment status.

    Resource Manager 자습서 포털 알림 창

  5. 스토리지 계정이 성공적으로 배포되면 알림 창에서 리소스 그룹으로 이동을 선택하여 리소스 그룹을 엽니다.After the storage account is deployed successfully, select Go to resource group from the notification pane to open the resource group.

Blob 컨테이너 만들기Create a Blob container

파일을 업로드하려면 먼저 Blob 컨테이너가 필요합니다.A Blob container is needed before you can upload any files.

  1. 저장소 계정을 선택하여 엽니다.Select the storage account to open it. 리소스 그룹에 나열된 스토리지 계정이 표시됩니다.You shall see only one storage account listed in the resource group. 스토리지 계정 이름은 다음 스크린샷에 표시된 것과 다릅니다.Your storage account name is different from the one shown in the following screenshot.

    Resource Manager 자습서 스토리지 계정

  2. Blob 타일을 선택합니다.Select the Blobs tile.

    Resource Manager 자습서 Blob

  3. 위쪽에서 + 컨테이너를 선택하여 새 컨테이너를 만듭니다.Select + Container from the top to create a new container.

  4. 다음 값을 입력합니다.Enter the following values:

    • 이름: sqlbacpac를 입력합니다.Name: enter sqlbacpac.
    • 공용 액세스 수준: 개인(익명 액세스 없음) 이라는 기본값을 사용합니다.Public access level: use the default value, Private (no anonymous access).
  5. 확인을 선택합니다.Select OK.

  6. sqlbacpac를 선택하여 새로 만든 컨테이너를 엽니다.Select sqlbacpac to open the newly created container.

컨테이너에 BACPAC 파일 업로드Upload the BACPAC file to the container

  1. 업로드를 선택합니다.Select Upload.

  2. 다음 값을 입력합니다.Enter the following values:

    • 파일: 지침에 따라 이전에 다운로드한 BACPAC 파일을 선택합니다.Files: Following the instructions to select the BACPAC file you downloaded earlier. 기본 이름은 SQLDatabaseExtension.bacpac입니다.The default name is SQLDatabaseExtension.bacpac.
    • 인증 형식: SAS를 선택합니다.Authentication type: Select SAS. SAS가 기본값입니다.SAS is the default value.
  3. 업로드를 선택합니다.Select Upload. 파일이 성공적으로 업로드되면 파일 이름이 컨테이너에 나열됩니다.Once the file is uploaded successfully, the file name shall be listed in the container.

SAS 토큰 만들기Generate a SAS token

  1. 컨테이너에서 SQLDatabaseExtension.bacpac를 마우스 오른쪽 단추로 클릭한 다음, SAS 생성을 선택합니다.Right-click SQLDatabaseExtension.bacpac from the container, and then select Generate SAS.

  2. 다음 값을 입력합니다.Enter the following values:

    • 사용 권한: 읽기라는 기본값을 사용합니다.Permission: Use the default, Read.
    • 시작 및 만료 날짜/시간: 기본값을 사용하면 8시간 동안 SAS 토큰을 사용할 수 있습니다.Start and expiry date/time: The default value gives you eight hours to use the SAS token. 이 자습서를 완료하는 데 시간이 더 필요한 경우 만료를 업데이트합니다.If you need more time to complete this tutorial, update Expiry.
    • 허용된 IP 주소: 이 필드는 공백으로 둡니다.Allowed IP addresses: Leave this field blank.
    • 허용된 프로토콜: 기본값을 사용합니다. HTTPS입니다.Allowed protocols: use the default value: HTTPS.
    • 서명 키: 기본값을 사용합니다. 키 1입니다.Signing key: use the default value: Key 1.
  3. URL 및 Blob SAS 토큰 생성을 선택합니다.Select Generate blob SAS token and URL.

  4. Blob SAS URL의 복사본을 만듭니다.Make a copy of Blob SAS URL. URL의 중간에서 파일 이름은 SQLDatabaseExtension.bacpac입니다.In the middle of the URL is the file name SQLDatabaseExtension.bacpac. 파일 이름은 URL을 세 부분으로 나눕니다.The file name divides the URL into three parts:

기존 템플릿 열기Open an existing template

이 세션에서는 자습서: Azure Resource Manager 템플릿을 사용하여 SQL BACPAC 파일 가져오기에서 만든 템플릿을 수정하여 SAS 토큰으로 BACPAC 파일을 호출합니다.In this session, you modify the template you created in Tutorial: Import SQL BACPAC files with Azure Resource Manager templates to call the BACPAC file with a SAS token. SQL 확장 자습서에서 개발된 템플릿은 https://armtutorials.blob.core.windows.net/sqlextensionbacpac/azuredeploy.json에서 공유됩니다.The template developed in the SQL extension tutorial is shared at https://armtutorials.blob.core.windows.net/sqlextensionbacpac/azuredeploy.json.

  1. Visual Studio Code에서 파일>파일 열기를 차례로 선택합니다.From Visual Studio Code, select File>Open File.

  2. 파일 이름에서 다음 URL을 붙여넣습니다.In File name, paste the following URL:

    https://armtutorials.blob.core.windows.net/sqlextensionbacpac/azuredeploy.json
    
  3. 열기를 선택하여 파일을 엽니다.Select Open to open the file.

    템플릿에 5개 리소스가 정의되어 있습니다.There are five resources defined in the template:

    • Microsoft.Sql/servers.Microsoft.Sql/servers. 템플릿 참조를 참조하세요.See the template reference.

    • Microsoft.SQL/servers/securityAlertPolicies.Microsoft.SQL/servers/securityAlertPolicies. 템플릿 참조를 참조하세요.See the template reference.

    • Microsoft.SQL/servers/filewallRules.Microsoft.SQL/servers/filewallRules. 템플릿 참조를 참조하세요.See the template reference.

    • Microsoft.SQL/servers/databases.Microsoft.SQL/servers/databases. 템플릿 참조를 참조하세요.See the template reference.

    • Microsoft.SQL/server/databases/extensions.Microsoft.SQL/server/databases/extensions. 템플릿 참조를 참조하세요.See the template reference.

      템플릿을 사용자 지정하기 전에 템플릿의 몇 가지 기본적인 내용을 이해하면 유용합니다.It is helpful to get some basic understanding of the template before customizing it.

  4. 파일>다른 이름으로 저장을 선택하여 파일 복사본을 로컬 컴퓨터에 azuredeploy.json이라는 이름으로 저장합니다.Select File>Save As to save a copy of the file to your local computer with the name azuredeploy.json.

템플릿 편집Edit the template

다음 추가 매개 변수를 추가합니다.Add the following additional parameters:

"_artifactsLocation": {
    "type": "string",
    "metadata": {
        "description": "The base URI where artifacts required by this template are located."
    }
},
"_artifactsLocationSasToken": {
    "type": "securestring",
    "metadata": {
        "description": "The sasToken required to access _artifactsLocation."
    },
    "defaultValue": ""
},
"bacpacFileName": {
    "type": "string",
    "defaultValue": "SQLDatabaseExtension.bacpac",
    "metadata": {
        "description": "The bacpac for configure the database and tables."
    }
}

Resource Manager 자습서 보호 아티팩트 매개 변수

다음 두 가지 요소 값을 업데이트합니다.Update the value of the following two elements:

"storageKey": "[parameters('_artifactsLocationSasToken')]",
"storageUri": "[uri(parameters('_artifactsLocation'), parameters('bacpacFileName'))]",

템플릿 배포Deploy the template

참고

이 문서는 새 Azure PowerShell Az 모듈을 사용하도록 업데이트되었습니다.This article has been updated to use the new Azure PowerShell Az module. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 수신할 예정이므로 계속 사용하셔도 됩니다.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. 새 Az 모듈 및 AzureRM 호환성에 대한 자세한 내용은 새 Azure PowerShell Az 모듈 소개를 참조하세요.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.For Az module installation instructions, see Install Azure PowerShell.

배포 절차는 템플릿 배포 섹션을 참조하세요.Refer to the Deploy the template section for the deployment procedure. 다음 PowerShell 배포 스크립트를 대신 사용합니다.Use the following PowerShell deployment script instead:

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$adminUsername = Read-Host -Prompt "Enter the virtual machine admin username"
$adminPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString
$artifactsLocation = Read-Host -Prompt "Enter the artifacts location"
$artifactsLocationSasToken = Read-Host -Prompt "Enter the artifacts location SAS token" -AsSecureString
$bacpacFileName = Read-Host -Prompt "Enter the BACPAC file name"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -adminUser $adminUsername `
    -adminPassword $adminPassword `
    -_artifactsLocation $artifactsLocation `
    -_artifactsLocationSasToken $artifactsLocationSasToken `
    -bacpacFileName $bacpacFileName `
    -TemplateFile "$HOME/azuredeploy.json"

생성된 암호를 사용합니다.Use a generated password. 필수 조건을 참조하세요.See Prerequisites. _artifactsLocation, _artifactsLocationSasToken 및 bacpacFileName이라는 값은 SAS 토큰 생성을 참조하세요.For the values of _artifactsLocation, _artifactsLocationSasToken and bacpacFileName, see Generate a SAS token.

배포 확인Verify the deployment

포털에서 새로 배포된 리소스 그룹의 SQL 데이터베이스를 선택합니다.In the portal, select the SQL database from the newly deployed resource group. 쿼리 편집기(미리 보기) 를 선택한 다음, 관리자 자격 증명을 입력합니다.Select Query editor (preview), and then enter the administrator credentials. 두 테이블을 데이터베이스로 가져온 것을 볼 수 있습니다.You shall see two tables imported into the database:

Azure Resource Manager가 sql 확장 BACPAC 배포

리소스 정리Clean up resources

Azure 리소스가 더 이상 필요하지 않은 경우 리소스 그룹을 삭제하여 배포한 리소스를 정리합니다.When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group.

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.From the Azure portal, select Resource group from the left menu.
  2. 이름으로 필터링 필드에서 리소스 그룹 이름을 입력합니다.Enter the resource group name in the Filter by name field.
  3. 해당 리소스 그룹 이름을 선택합니다.Select the resource group name. 리소스 그룹에 총 6개의 리소스가 표시됩니다.You shall see a total of six resources in the resource group.
  4. 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.Select Delete resource group from the top menu.

다음 단계Next steps

이 자습서에서는 SAS 토큰을 사용하여 SQL Server, SQL Database를 배포하고 BACPAC 파일을 가져왔습니다.In this tutorial, you deployed a SQL Server, a SQL Database, and imported a BACPAC file using SAS token. 여러 지역에 Azure 리소스를 배포하는 방법 및 안전한 배포 사례를 사용하는 방법을 알아보려면 다음을 참조하세요.To learn how to deploy Azure resources across multiple regions, and how to use safe deployment practices, see