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
Reference
이 문제에 관하여(ID 기반 연결을 사용하는 Azure 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/markusmeyer13/azure-function-with-identity-based-connections-58jd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)