소개
스토리지 계정의 데이터 평면 액세스를 강화하는 것은 보안을 높이기 위한 일반적인 방법입니다. 그러나 가상 네트워크(VNET) 통합이 적용된 Azure 리소스를 사용하거나 프라이빗 IP 또는 다른 테넌트에서 스토리지 엔드포인트에 액세스할 때 원본이 제대로 허용 목록에 등록되지 않으면 권한 부여 오류가 발생할 수 있습니다. 이 글에서는 이러한 오류를 유발하는 일반적인 시나리오를 살펴보고 실행 가능한 해결 방법을 제공합니다.
일반적인 권한 부여 오류 시나리오
시나리오 1: 다른 지역에서 액세스
호출하는 원본이 다른 Azure 지역에 있는 경우 일반적으로 원본의 공용 IP 주소 를 스토리지 계정 방화벽에 추가함으로써 해결할 수 있습니다.
시나리오 2: 동일 지역 액세스 실패
동일한 Azure 지역에서 시작된 요청은 일반적으로 Azure 프라이빗 IP 주소 를 공용 IP 대신 사용합니다. 이 경우 공용 IP를 허용 목록에 추가하면 실패합니다. 자세한 내용은 다음을 참조하세요. Azure Storage 방화벽 및 가상 네트워크 구성
시나리오 3: 특정 서브넷으로 액세스 제한
리소스에 공용 IP가 없지만 클라이언트가 특정 서브넷으로 액세스를 제한하려는 경우 가시성 제한으로 인해 문제가 발생할 수 있습니다. 스토리지 계정 방화벽에 대상 서브넷이 표시되지 않을 수 있어, 수동으로 허용 목록에 추가하려면 기여자 RBAC 액세스 이상의 액세스 권한을 가진 사람이 수동으로 허용 목록에 추가해야 합니다.
시나리오 4: 다른 Azure 테넌트에서 액세스
스토리지 계정에 액세스하려는 리소스가 다른 Azure 테넌트에 속한 경우 원본 서브넷을 허용 목록에 추가하려면 추가 단계가 필요합니다.
해결 단계
다른 테넌트의 서브넷 추가
다른 Azure 테넌트의 가상 네트워크에 있는 서브넷을 허용 목록에 추가하려면 VirtualNetworkResourceId 매개 변수를 사용해야 합니다. 이때 서브넷 URI를 다음 형식으로 지정합니다.
/subscriptions/<subscription-ID>/resourceGroups/<resourceGroup-Name>/providers/Microsoft.Network/virtualNetworks/<vNet-name>/subnets/<subnet-name>
PowerShell 명령 예
서브넷 URI를 가져오려면 다음 명령을 사용합니다.
$subnet = Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Get-AzVirtualNetworkSubnetConfig -Name "mysubnet"
원본 테넌트에서 이 명령을 실행할 충분한 액세스 권한이 사용자에게 없는 경우 Azure에서 VNET 리소스의 JSON 본문을 검사하여 서브넷 URI를 검색할 수 있습니다. 이를 위해서는 리소스에 대한 제어 평면 READ 액세스 이(가) 필요합니다.
스토리지 서비스 엔드포인트 사용 설정
서브넷을 허용 목록에 추가하기 전에 Microsoft.Storage 또는 Microsoft.Storage.Global 서비스 엔드포인트가 활성화되어 있는지 확인하세요. 이는 Azure PowerShell, CLI 또는 Azure Portal을 사용하여 수행할 수 있습니다. 단계별 지침은 다음을 참조하세요. Azure Storage 방화벽 및 가상 네트워크 구성.
허용 목록 추가를 위한 명령 예
서브넷 URI를 얻은 후 다음 명령을 사용하여 네트워크 규칙을 추가합니다.
Add-AzStorageAccountNetworkRule -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount" -VirtualNetworkResourceId $subnet
확인
연결을 확인하려면 curl 명령을 SAS 토큰과 함께 사용하세요.
curl https://storageaccountname.blob.core.windows.net/container/hello.txt?<SAS token>
팁:
-
-v플래그는curl명령에서 자세한 출력을 활성화하며, 다음과 같은 HTTP 응답을 식별하는 데 도움이 될 수 있습니다.403 Forbidden플래그를 제거하면 더 깔끔한 출력을 얻을 수 있습니다.

아래 예에서는 대상 스토리지 계정 방화벽의 서브넷이 표시됩니다

팁: 강조 표시된 경고는 무시해도 안전합니다. 이는 허용 목록에 등록된 서브넷에 대한 READ 제어 평면 액세스와 관련이 있으며, 데이터 평면 액세스는 허용됩니다.
추가 고려 사항
- 서비스 엔드포인트 사용 설정: 스토리지 서비스 엔드포인트를 활성화하면 일시적인 연결 중단이 발생할 수 있습니다. 자세한 내용은 다음을 참조하세요. Azure Virtual Network 서비스 엔드포인트.
- 프라이빗 엔드포인트: 프라이빗 엔드포인트는 DNS와 승인된 서브넷을 통한 연결에 의존하므로 방화벽 네트워크 규칙을 우회합니다. 다음을 참조하세요. 프라이빗 엔드포인트 사용 – Azure Storage.
- 제어 평면과 데이터 평면: 제어 평면 작업과 데이터 평면 작업의 차이를 이해하는 것은 문제 해결에 매우 중요합니다. 자세한 내용은 다음을 참조하세요. 제어 평면 및 데이터 평면 작업.
결론
Azure Storage 엔드포인트에 액세스할 때 발생하는 권한 부여 오류는 잘못 구성된 방화벽 규칙이나 서브넷 가시성 부족에서 비롯되는 경우가 많습니다. 위에 설명된 단계를 따르면 이러한 문제를 효과적으로 해결하여 안전하고 원활한 데이터 평면 액세스를 보장할 수 있습니다.