서비스 커넥터 내부
서비스 커넥터는 Azure 서비스 간의 연결을 만들고 관리하는 간단한 방법을 제공하도록 설계된 Azure 확장 리소스 공급자입니다.
서비스 커넥터는 다음 기능을 제공합니다.
- 단일 Azure CLI 명령을 사용하거나 Azure Portal을 사용하여 몇 가지 단계를 통해 Azure 서비스를 함께 연결할 수 있습니다.
- 클라우드 네이티브 애플리케이션과 함께 사용되는 점점 더 많은 수의 데이터베이스, 스토리지, 실시간 서비스, 상태 및 비밀 저장소를 지원합니다.
- 네트워크 설정, 인증을 구성하고 연결 환경 변수 또는 속성을 관리합니다.
- 연결의 유효성을 검사하고 잘못된 연결을 수정하기 위한 제안을 제공합니다.
서비스 연결 개요
서비스 연결의 개념은 서비스 커넥터의 리소스 모델에서 핵심 개념입니다. 서비스 연결은 두 서비스 간의 링크 추상화를 나타냅니다. 서비스 연결에는 다음과 같은 속성이 있습니다.
속성 | 설명 |
---|---|
연결 이름 | 서비스 연결의 고유한 이름 |
원본 서비스 유형 | 원본 서비스는 대상 서비스에 연결할 수 있는 서비스입니다. 일반적으로 Azure 컴퓨팅 서비스이며 Azure 앱 Service, Azure Container Apps, Azure Functions, AKS(Azure Kubernetes Service) 및 Azure Spring Apps를 포함합니다. |
대상 서비스 형식 | 대상 서비스는 컴퓨팅 서비스가 연결하는 지원 서비스 또는 종속성 서비스입니다. 서비스 커넥터는 주요 데이터베이스, 스토리지, 실시간 서비스, 상태 및 비밀 저장소를 비롯한 다양한 대상 서비스 유형을 지원합니다. |
클라이언트 유형 | 클라이언트 유형은 연결 환경 변수 또는 속성의 특정 형식을 허용하는 컴퓨팅 런타임 스택, 개발 프레임워크 또는 특정 형식의 클라이언트 라이브러리를 나타냅니다. |
인증 유형 | 서비스 연결에 사용되는 인증 유형입니다. 비밀/연결 문자열, 관리 ID 또는 서비스 주체일 수 있습니다. |
원본 서비스와 대상 서비스는 여러 동시 서비스 연결을 지원합니다. 즉, 각 리소스를 여러 리소스에 연결할 수 있습니다.
서비스 커넥터는 원본 인스턴스의 속성에서 연결을 관리합니다. 연결 만들기, 가져오기, 업데이트 및 삭제는 Azure Portal에서 원본 서비스 인스턴스를 열거나 원본 서비스의 CLI 명령을 사용하여 직접 수행됩니다.
구독 또는 테넌트 간에 연결이 이루어질 수 있습니다. 즉, 원본 및 대상 서비스가 다른 구독 또는 테넌트에 속할 수 있습니다. 새 서비스 연결을 만들면 기본적으로 컴퓨팅 서비스 인스턴스와 동일한 지역에 연결 리소스가 만들어집니다.
서비스 연결 만들기 및 업데이트
서비스 커넥터는 다음을 포함하여 서비스 연결을 만들거나 업데이트하는 동안 여러 작업을 실행합니다.
네트워크 및 방화벽 설정을 구성합니다. 네트워크 솔루션에 대해 자세히 알아봅니다.
연결 정보를 구성합니다. 연결 구성에 대해 자세히 알아봅니다.
인증 정보를 구성합니다. 서비스 커넥터는 원본 서비스와 대상 서비스 간에 사용 가능한 모든 인증 유형을 지원합니다.
- 시스템이 할당한 관리 ID. 서비스 커넥터는 아직 사용하도록 설정되지 않은 경우 원본 서비스에서 시스템이 할당한 관리 ID를 사용하도록 설정한 후 대상 서비스의 RBAC 역할을 관리 ID에 부여합니다. 사용자는 부여할 역할을 지정할 수 있습니다.
- 사용자가 할당한 관리 ID. 서비스 커넥터는 아직 사용하도록 설정되지 않은 경우 원본 서비스에서 사용자가 할당한 관리 ID를 사용하도록 설정한 후 대상 서비스의 RBAC 역할을 관리 ID에 부여합니다. 사용자는 부여할 역할을 지정할 수 있습니다.
- 연결 문자열 서비스 커넥터는 Storage, Redis Cache 등과 같은 대상 서비스에서 연결 문자열을 검색하거나 SQL용 Azure 데이터베이스, PostgreSQL 등과 같은 사용자 입력을 기반으로 연결 문자열을 생성합니다.
- 서비스 주체. 서비스 커넥터는 관리 ID에 대상 서비스의 RBAC 역할을 부여합니다. 사용자는 부여할 역할을 지정할 수 있습니다.
서비스 커넥터는 원본 서비스에 해당 인증 구성을 저장합니다(예: 인증 유형 사용자가 할당한 관리 ID를 사용하여 Storage에 대한 AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_STORAGEACCOUNT_ENDPOIN 저장).
실패 시 연결 롤백 만들기 또는 업데이트
이 프로세스가 진행되는 동안 한 단계가 실패하면 서비스 커넥터는 이전의 모든 단계를 롤백하여 원본 및 대상 인스턴스에서 초기 설정을 유지합니다.
리소스 공급자
Microsoft.ServiceLinker는 서비스 커넥터 리소스 공급자의 이름입니다.
사용자가 Azure Portal에서 서비스 커넥터 탭을 열면 ServiceLinker 리소스 공급자가 사용자의 활성 구독에 자동으로 등록됩니다. 등록을 생성한 사용자가 등록 이벤트의 초기자로 나열됩니다.
서비스 커넥터를 사용하면 사용자가 구독 간에 서비스를 연결할 수 있습니다. 사용자가 다른 구독에 등록된 대상 서비스에 대한 연결을 만들면 서비스 링커도 대상 서비스의 구독에 등록됩니다. 이 등록은 사용자가 마지막으로 연결을 만들기 전에 검토 + 만들기 탭을 선택할 때 발생합니다.
연결 구성
연결 구성은 원본 서비스에서 설정됩니다.
Azure Portal에서 원본 서비스를 열고 서비스 커넥터로 이동합니다. 각 연결을 확장하고 연결 구성을 확인합니다.
CLI에서 list-configuration
명령을 사용하여 연결 구성을 가져옵니다.
az webapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az spring connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az containerapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
구성 명명 규칙
서비스 커넥터는 연결을 만들 때 연결 구성을 설정합니다. 환경 변수 키-값 쌍은 클라이언트 유형 및 인증 유형에 따라 결정됩니다. 예를 들어 관리 ID와 함께 Azure SDK를 사용하려면 클라이언트 ID, 클라이언트 암호 등이 필요합니다. JDBC 드라이버를 사용하려면 데이터베이스 연결 문자열이 필요합니다. 해당 규칙에 따라 구성 이름을 지정합니다.
Spring Boot 클라이언트: 각 대상 서비스에 대한 Spring Boot 라이브러리에는 고유한 명명 규칙이 있습니다. 예를 들어 MySQL 연결 설정은
spring.datasource.url
,spring.datasource.username
,spring.datasource.password
입니다. Kafka 연결 설정은spring.kafka.properties.bootstrap.servers
입니다.기타 클라이언트:
- 첫 번째 연결 구성의 키 이름은
<Cloud>_<Type>_<Name>
형식을 사용합니다. 예:AZURE_STORAGEBLOB_RESOURCEENDPOINT
,CONFLUENTCLOUD_KAFKA_BOOTSTRAPSERVER
- 동일한 유형의 대상 리소스에 대해 두 번째 연결 구성의 키 이름은
<Cloud>_<Type>_<Connection Name>_<Name>
입니다. 예:AZURE_STORAGEBLOB_CONN2_RESOURCEENDPOINT
,CONFLUENTCLOUD_KAFKA_CONN2_BOOTSTRAPSERVER
- 첫 번째 연결 구성의 키 이름은
서비스 네트워크 솔루션
서비스 커넥터는 연결을 만들 때 선택할 수 있는 세 가지 네트워크 솔루션을 제공합니다. 이러한 솔루션은 리소스 간의 안전하고 효율적인 통신을 용이하게 하도록 설계되었습니다.
방화벽: 이 솔루션을 사용하면 공용 네트워크를 통한 연결과 공용 IP 주소를 사용하여 대상 리소스에 액세스하는 컴퓨팅 리소스를 허용합니다. 이 옵션을 선택할 때 서비스 커넥터는 대상 리소스의 방화벽 설정을 확인하고 원본 리소스의 공용 IP 주소에서 연결을 허용하는 규칙을 추가합니다. 리소스의 방화벽이 모든 Azure 리소스 액세스 허용을 지원하는 경우 서비스 커넥터는 이 설정을 사용하도록 설정합니다. 그러나 대상 리소스가 기본적으로 모든 공용 네트워크 트래픽을 거부하는 경우 서비스 커넥터는 이 설정을 수정하지 않습니다. 이 경우 다시 시도하기 전에 다른 옵션을 선택하거나 네트워크 설정을 수동으로 업데이트해야 합니다.
서비스 엔드포인트: 이 솔루션을 사용하면 컴퓨팅 리소스가 가상 네트워크를 통해 대상 리소스에 연결하여 연결 트래픽이 공용 네트워크를 통과하지 않도록 합니다. 이는 특정 사전 조건이 충족되는 경우에만 사용할 수 있습니다.
- 컴퓨팅 리소스는 가상 네트워크 통합을 사용하도록 설정해야 합니다. Azure App Service의 경우 네트워킹 설정에서 구성할 수 있고, Azure Spring Apps의 경우 리소스 생성 단계에서 Virtual Network 삽입을 설정해야 합니다.
- 대상 서비스는 서비스 엔드포인트를 지원해야 합니다. 지원되는 서비스 목록은 Virtual Network 서비스 엔드포인트를 참조하세요.
이 옵션을 선택할 때 서비스 커넥터는 가상 네트워크에 있는 컴퓨팅 리소스의 개인 IP 주소를 대상 리소스의 Virtual Network 규칙에 추가하고 원본 리소스의 서브넷 구성에서 서비스 엔드포인트를 사용하도록 설정합니다. 사용자에게 충분한 권한이 없거나 리소스의 SKU 또는 지역이 서비스 엔드포인트를 지원하지 않는 경우 연결 생성이 실패합니다.
프라이빗 엔드포인트: 이 솔루션은 가상 네트워크를 통해 리소스를 연결하는 데 권장되는 방법이며 특정 사전 조건이 충족되는 경우에만 사용할 수 있습니다.
컴퓨팅 리소스는 가상 네트워크 통합을 사용하도록 설정해야 합니다. Azure App Service의 경우 네트워킹 설정에서 구성할 수 있고, Azure Spring Apps의 경우 리소스 생성 단계에서 VNet 삽입을 설정해야 합니다.
대상 서비스는 프라이빗 엔드포인트를 지원해야 합니다. 지원되는 서비스 목록은 Private-link 리소스 를 참조하세요.
이 옵션을 선택할 때 서비스 커넥터는 컴퓨팅 또는 대상 리소스에서 더 이상 구성을 수행하지 않습니다. 대신 유효한 프라이빗 엔드포인트가 있는지 확인하고 연결이 없는 경우 연결에 실패합니다. 편의를 위해 사용자는 연결을 만들 때 Azure Portal에서 "새 프라이빗 엔드포인트" 확인란을 선택할 수 있습니다. 이를 통해 서비스 커넥터는 적절한 순서로 프라이빗 엔드포인트에 대한 모든 관련 리소스를 자동으로 만들어 연결 만들기 프로세스를 간소화합니다.
서비스 연결 유효성 검사
연결 유효성을 검사할 때 서비스 커넥터는 다음 요소를 확인합니다.
- 원본 및 대상 리소스가 있습니다.
- 원본: 올바른 연결 정보가 등록되어 있습니다.
- 대상: 올바른 네트워크 및 방화벽 설정이 등록되어 있습니다.
- 원본 및 대상 리소스: 올바른 인증 정보가 등록되어 있습니다.
연결 삭제
서비스 연결이 삭제되면 연결 정보도 삭제됩니다.
다음 단계
서비스 커넥터에 대한 자세한 내용은 다음 개념 문서를 참조하세요.