ID 기반 연결을 사용하는 Azure 함수

목차



1Objective
2 Managed identity
3Azure Table binding

Configure an identity-based connection

Some connections in Azure Functions can be configured to use an identity instead of a secret. Support depends on the extension using the connection. In some cases, a connection string may still be required in Functions even though the service to which you are connecting supports identity-based connections. For a tutorial on configuring your function apps with managed identities, see the creating a function app with identity-based connections tutorial.



Tutorial: Create a function app that connects to Azure services using identities instead of secrets

This tutorial shows you how to configure a function app using Azure Active Directory identities instead of secrets or connection strings, where possible. Using identities helps you avoid accidentally leaking sensitive secrets and can provide better visibility into how data is accessed.



암튼 이건 진짜 대박입니다 :-)

ID 기반 연결에 대한 전체 코드는 다음에서 찾으십시오.
https://github.com/MarkusMeyer13/azure.functions.tables

1 목표

Create an Azure Function with identity-based connections to AzureWebJobsStorage and a Table Storage.


2 관리 ID

Create an Azure Function with a managed identity:

The following script assigns the system-assigned managed identity 새 Azure 함수 앱에.

storageAccountFunction='strfunctionmm01'
resourceGroup='eval.table'
functionName='SampleFunctionMM01'

az appservice plan create --resource-group $resourceGroup --name 'samplePlan' 
az functionapp create --name $functionName --resource-group $resourceGroup --storage-account $storageAccountFunction --os-type Linux --functions-version 4 --plan 'samplePlan'

az functionapp identity assign --name $functionName --resource-group $resourceGroup


Azure Function에서 관리 ID를 만들었습니다.



관리 ID 및 저장소 계정에 대한 ID를 검색하고 저장소 Blob 데이터 기여자 역할을 할당합니다.

functionManagedId=$(az functionapp identity show --name $functionName --resource-group $resourceGroup --query principalId -o tsv)

storageAccountFunctionId=$(az storage account list --resource-group $resourceGroup --query "[?name=='$storageAccountFunction'].id" -o tsv)
az role assignment create --role "Storage Blob Data Contributor" --scope $storageAccountFunctionId --assignee-principal-type ServicePrincipal --assignee-object-id $functionManagedId


역할이 할당된 저장소 계정:



마지막 단계는 기본 AzureWebJobsStorage 구성을 제거하고 스토리지 계정 이름 AzureWebJobsStorage__accountName만 설정하는 것입니다.

az functionapp config appsettings delete --name $functionName --resource-group $resourceGroup --setting-names "AzureWebJobsStorage"
az functionapp config appsettings set --name $functionName --resource-group $resourceGroup --settings AzureWebJobsStorage__accountName=${storageAccountFunction}


Azure 함수 구성에 연결 문자열이 없습니다.



Edit the AzureWebJobsStorage configuration

Update the name from AzureWebJobsStorage to the exact name AzureWebJobsStorage__accountName. This setting tells the host to use the identity instead of looking for a stored secret. The new setting uses a double underscore (__), which is a special character in application settings.



3 Azure 테이블 바인딩

The new Azure WebJobs Tables extension Azure 함수 바인딩에 사용됩니다.

Azure Function은 Table Storage에서 엔터티를 추가하고 삭제합니다.
Table Storage는 AzureWebJobsStorage와 다른 스토리지 계정의 일부입니다. 따라서 바인딩에서 연결을 지정해야 합니다.

public static async Task<IActionResult> AddAsync(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "sample")] HttpRequest req,
    [Table("Sample", Connection = "SampleTableConnection")] TableClient client,
    ILogger log)
{
// ...
}


Grant permission to the identity - Azure Table API extension


바인딩 유형
기본 제공 역할의 예(Azure Storage1)


입력 바인딩
스토리지 테이블 데이터 판독기

출력 바인딩
저장소 테이블 데이터 기여자


따라서 관리 ID는 Azure Table Storage에 대한 Storage Table Data Contributor 역할로 할당되어야 합니다.

storageAccount='strsample'
resourceGroup='eval.table'
functionName='SampleFunctionMM01'

functionManagedId=$(az functionapp identity show --name $functionName --resource-group $resourceGroup --query principalId -o tsv)

storageAccountId=$(az storage account list --resource-group $resourceGroup --query "[?name=='$storageAccount'].id" -o tsv)
az role assignment create --role "Storage Table Data Contributor" --scope $storageAccountId --assignee-principal-type ServicePrincipal --assignee-object-id $functionManagedId


할당된 역할 스토리지 테이블 데이터 기여자:



연결 명명 규칙:

Using endpoint and token credential


<ConnectionName>__endpoint = https://...table.core.windows.net




tableEndpoint="https://$storageAccount.table.core.windows.net"
az functionapp config appsettings set --name $functionName --resource-group $resourceGroup --settings SampleTableConnection__endpoint=$tableEndpoint



마지막으로 모든 Azure 함수 설정에는 더 이상 연결 문자열이 포함되지 않습니다.



여기에서 전체 코드를 받으십시오.

git clone https://github.com/MarkusMeyer13/azure.functions.tables.git


연결



Azure services that can use managed identities to access other services

What’s new in the Azure Functions Tables extension for

좋은 웹페이지 즐겨찾기