Azure Logic Apps는 Microsoft Azure에서 제공하는 클라우드 기반 서비스로, 개발자가 다양한 서비스, 데이터 소스 및 애플리케이션을 통합하는 워크플로를 생성하고 실행할 수 있게 합니다. 이러한 워크플로는 비즈니스 프로세스를 자동화하고, 작업을 조정하며, 다양한 플랫폼 간의 데이터 통합을 수행하도록 설계되었습니다.
Logic Apps는 광범위한 사전 구축된 커넥터를 사용하여 다양한 서비스(예: Office 365, Dynamics CRM, Salesforce 등)와 쉽게 연결하고 상호 작용할 수 있는 시각적 디자이너를 제공합니다. 또한 특정 요구에 맞는 사용자 정의 커넥터를 만들 수도 있습니다.
예시
데이터 파이프라인 자동화: Logic Apps는 Azure Data Factory와 결합하여 데이터 전송 및 변환 프로세스를 자동화할 수 있습니다. 이는 Azure SQL Database 및 Azure Blob Storage와 같은 다양한 데이터 저장소 간에 데이터를 이동하고 변환하여 분석 및 비즈니스 인텔리전스 작업을 지원하는 확장 가능하고 신뢰할 수 있는 데이터 파이프라인을 만드는 데 유용합니다.
Azure Functions와의 통합: Logic Apps는 Azure Functions와 함께 작동하여 필요에 따라 확장되는 정교한 이벤트 기반 애플리케이션을 개발하고 다른 Azure 서비스와 원활하게 통합할 수 있습니다. 예를 들어, Logic App을 사용하여 Azure Storage 계정의 변경 사항과 같은 특정 이벤트에 응답하여 Azure Function을 트리거하여 동적 데이터 처리를 수행할 수 있습니다.
LogicAPP 시각화
LogicApp을 그래픽으로 볼 수 있습니다:
또는 "Logic app code view" 섹션에서 코드를 확인할 수 있습니다.
SSRF 보호
Logic App이 SSRF에 취약하더라도, Logic Apps는 메타데이터에서 자격 증명을 허용하지 않기 때문에 자격 증명에 접근할 수 없습니다.
예를 들어, 다음과 같은 것은 토큰을 반환하지 않습니다:
# The URL belongs to a Logic App vulenrable to SSRFcurl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
Enumeration
# Listazlogicworkflowlist--resource-group<ResourceGroupName>--subscription<SubscriptionID>--outputtable# Get infoazlogicworkflowshow--name<LogicAppName>--resource-group<ResourceGroupName>--subscription<SubscriptionID># Get Logic App configaz logic workflow definition show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
# Get service ppal usedaz logic workflow identity show --name <LogicAppName> --resource-group <ResourceGroupName> --subscription <SubscriptionID>
# ListGet-AzLogicApp-ResourceGroupName <ResourceGroupName># Get infoGet-AzLogicApp-ResourceGroupName <ResourceGroupName>-Name <LogicAppName># Get Logic App config(Get-AzLogicApp-ResourceGroupName <ResourceGroupName>-Name <LogicAppName>).Definition |ConvertTo-Json# Get service ppal used(Get-AzLogicApp-ResourceGroupName <ResourceGroupName>-Name <LogicAppName>).Identity