자습서: 관리 ID 및 SQL 바인딩을 사용하여 Azure SQL에 함수 앱 연결

Azure Functions는 Azure SQL Database 및 기타 Azure 서비스에 대한 액세스를 보호하기 위한 턴키 솔루션인 관리 ID를 제공합니다. 관리 ID는 연결 문자열의 자격 증명과 같은 비밀을 앱에서 제거하여 앱을 더욱 안전하게 만듭니다. 이 자습서에서는 Azure SQL 바인딩을 활용하는 Azure Function에 관리 ID를 추가합니다. SQL 바인딩이 포함된 샘플 Azure Function 프로젝트는 ToDo 백 엔드 예제에서 사용할 수 있습니다.

이 자습서를 마치면 Azure Function이 사용자 이름과 암호 없이 Azure SQL 데이터베이스에 연결됩니다.

수행할 단계에 대한 개요:

Microsoft Entra 사용자에게 데이터베이스 액세스 권한 부여

먼저 Microsoft Entra 사용자를 Active Directory 서버 관리자로 할당하여 SQL 데이터베이스에 대한 Microsoft Entra 인증을 사용 설정합니다. 이 사용자는 Azure 구독에 가입하는 데 사용한 Microsoft 계정과 다릅니다. 직접 만들거나, Microsoft Entra ID로 가져오거나, 동기화하거나, 초대한 사용자여야 합니다. 허용되는 Microsoft Entra 사용자에 대한 자세한 내용은 SQL 데이터베이스의 Microsoft Entra 기능 및 제한 사항을 참조하세요.

Microsoft Entra 인증 사용 설정은 Azure Portal, PowerShell 또는 Azure CLI를 통해 완료할 수 있습니다. Azure CLI에 대한 지침은 아래에 있으며 Azure Portal 및 PowerShell을 통해 이를 완료하는 정보는 Microsoft Entra 인증에 대한 Azure SQL 설명서에서 확인할 수 있습니다.

  1. Microsoft Entra 테넌트에 아직 사용자가 없는 경우 Microsoft Entra ID를 사용하여 사용자 추가 또는 삭제의 단계에 따라 하나를 만듭니다.

  2. az ad user list를 사용하여 Microsoft Entra 사용자의 개체 ID를 찾고 <user-principal-name>을 바꿉니다. 결과는 변수에 저장됩니다.

    Azure CLI 2.37.0 이상:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    이전 버전의 Azure CLI:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Microsoft Entra ID의 모든 사용자 계정 이름 목록을 보려면 az ad user list --query [].userPrincipalName를 실행합니다.

  3. Cloud Shell에서 az sql server ad-admin create 명령을 사용하여 이 Microsoft Entra 사용자를 Active Directory 관리자로 추가합니다. 다음 명령에서 <server-name>.database.windows.net 접미사 없이 서버 이름으로 바꿉니다.

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Active Directory 관리자를 추가하는 방법에 대한 자세한 내용은 서버의 Microsoft Entra 관리자 프로비전을 참조하세요.

Azure Function에서 시스템 할당 관리 ID 사용

이 단계에서는 시스템 할당 ID를 Azure Function에 추가합니다. 이후 단계에서 이 ID에 SQL 데이터베이스에 대한 액세스 권한이 부여됩니다.

Azure Portal에서 시스템 할당 관리 ID를 사용하도록 설정하려면:

  1. 평소와 같이 포털에서 Azure 함수를 만듭니다. 포털에서 해당 앱으로 이동합니다.
  2. 왼쪽 탐색에서 설정 그룹이 나올 때까지 아래로 스크롤합니다.
  3. ID를 선택합니다.
  4. 시스템 할당 탭에서 상태를 켜기로 바꿉니다. 저장을 클릭합니다.

Turn on system assigned identity for Function app

Azure CLI 또는 PowerShell을 통해 시스템 할당 관리 ID를 사용하도록 설정하는 방법에 대한 자세한 내용은 Azure Functions에서 관리 ID 사용에 대한 추가 정보를 체크 아웃합니다.

사용자가 할당한 관리 ID의 경우 사용자 할당 탭으로 전환합니다. 추가를 클릭하고 관리 ID를 선택합니다. 사용자가 할당한 관리 ID를 만드는 방법에 대한 자세한 내용은 사용자가 할당한 관리 ID 관리를 참조하세요.

관리 ID에 SQL 데이터베이스 액세스 권한 부여

이 단계에서는 Microsoft Entra 사용자 계정으로 SQL 데이터베이스에 연결하고 데이터베이스에 대한 관리 ID 액세스 권한을 부여합니다.

  1. 기본 설정하는 SQL 도구를 열고 Microsoft Entra 사용자 계정(예: 관리자로 할당한 Microsoft Entra 사용자)으로 로그인합니다. 이는 SQLCMD 명령을 사용하여 Cloud Shell에서 수행할 수 있습니다.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. 원하는 데이터베이스에 대한 SQL 프롬프트에서 다음 명령을 실행하여 함수에 권한을 부여합니다. 예를 들면 다음과 같습니다.

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <identity-name>은 Microsoft Entra ID의 관리 ID 이름입니다. ID가 시스템 할당된 경우 이름은 항상 함수 앱의 이름과 동일합니다.

Azure Function SQL 연결 문자열 구성

마지막 단계에서는 Microsoft Entra 관리 ID 인증을 사용하도록 Azure Function SQL 연결 문자열을 구성합니다.

연결 문자열 설정 이름은 SQL 입력 바인딩 특성 및 주석에서 볼 수 있듯이 함수 코드에서 바인딩 특성 "ConnectionStringSetting"으로 식별됩니다.

함수 앱의 애플리케이션 설정에서 SQL 연결 문자열 설정은 다음 형식을 따르도록 업데이트되어야 합니다.

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb는 연결하려는 데이터베이스의 이름이고 demo.database.windows.net은 연결하려는 서버의 이름입니다.

사용자가 할당한 관리 ID의 경우 Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb를 사용합니다.

다음 단계