Azure Cosmos DB에서 IP 방화벽 구성
적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블
계정에 저장된 데이터를 보호하기 위해 Azure Cosmos DB는 강력한 HMAC(해시 기반 메시지 인증 코드)를 활용하는 비밀 기반 권한 부여 모델을 지원합니다. 또한 Azure Cosmos DB는 인바운드 방화벽 지원을 위해 IP 기반 액세스 제어를 지원합니다. 이 모델은 기존 데이터베이스 시스템의 방화벽 규칙과 유사하며 사용자 계정에 또 다른 수준의 보안을 제공합니다. 방화벽에서는 승인된 머신 및/또는 클라우드 서비스에서만 액세스할 수 있도록 Azure Cosmos DB 계정을 구성할 수 있습니다. 이러한 승인된 머신 및 서비스에서 Azure Cosmos DB 데이터베이스에 저장된 데이터에 액세스하려면 여전히 호출자가 유효한 권한 부여 토큰을 제공해야 합니다.
IP 액세스 제어
기본적으로 요청에 유효한 권한 부여 토큰이 포함되어 있으면 인터넷에서 Azure Cosmos DB 계정에 액세스할 수 있습니다. IP 정책 기반 액세스 제어를 구성하려면 사용자가 지정된 Azure Cosmos DB 계정에 액세스하도록 허용된 클라이언트 IP 목록으로 포함할 IP 주소 또는 IP 주소 범위 집합을 CIDR(Classless Inter-Domain Routing) 형식으로 제공해야 합니다. 이 구성이 적용되면 이 허용되는 목록 이외의 머신에서 보내는 모든 요청은 403(금지됨) 응답을 받습니다. IP 방화벽을 사용하는 경우 계정에 액세스하려면 Azure Portal을 허용하는 것이 좋습니다. 데이터 탐색기를 사용하고 Azure Portal에 표시되는 계정에 대한 메트릭을 검색하려면 액세스 권한이 필요합니다. Data Explorer를 사용하는 경우 Azure Portal에서 계정에 액세스하도록 허용하는 것 외에도 방화벽 설정을 업데이트하여 현재 IP 주소를 방화벽 규칙에 추가해야 합니다. 방화벽 변경 내용이 전파되는 데 최대 15분이 걸릴 수 있으며 이 기간 동안에는 방화벽이 일관되지 않은 동작을 발생시킬 수 있습니다.
서브넷 및 Virtual Network 액세스 제어를 사용하여 IP 기반 방화벽을 결합할 수 있습니다. 결합하면 공용 IP가 있는 모든 원본에 대한 액세스 및/또는 Virtual Network 내 특정 서브넷으로부터의 액세스를 제한할 수 있습니다. 서브넷 및 Virtual Network 기반 액세스 제어 사용에 대해 자세히 알아보려면 가상 네트워크에서 Azure Cosmos DB 리소스에 액세스를 참조하세요.
요약하면, Azure Cosmos DB 계정에 액세스하려면 권한 부여 토큰이 항상 필요합니다. IP 방화벽 및 Virtual Network ACL(액세스 제어 목록)을 설정하지 않은 경우 권한 부여 토큰을 사용하여 Azure Cosmos DB 계정에 액세스할 수 있습니다. Azure Cosmos DB 계정에서 IP 방화벽과 Virtual Network ACL 중 하나 또는 모두 설정되면 지정한(및 권한 부여 토큰 사용) 원본에서 발생하는 요청만 유효한 응답을 가져옵니다.
IP 방화벽을 사용하여 Azure Cosmos DB 계정에 저장된 데이터를 보호할 수 있습니다. Azure Cosmos DB는 인바운드 방화벽 지원을 위해 IP 기반 액세스 제어를 지원합니다. 다음 방법 중 하나를 사용하여 Azure Cosmos DB 계정에서 IP 방화벽을 설정할 수 있습니다.
- Azure Portal에서
- Azure Resource Manager 템플릿을 사용하여 선언적으로
- ipRangeFilter 속성을 업데이트하여 Azure CLI 또는 Azure PowerShell을 통해 프로그래밍 방식으로
Azure Portal을 사용하여 IP 방화벽 구성
Azure Portal에서 IP 액세스 제어 정책을 설정하려면 Azure Cosmos DB 계정 페이지로 이동하여 탐색 메뉴에서 네트워킹을 선택합니다. 다음에서 액세스 허용 값을 선택한 네트워크로 변경한 다음, 저장을 선택합니다. 아직 IP 주소를 추가하지 않는 경우 모든 VNet 및 IP가 차단됨을 확인하는 확인란을 선택해야 합니다. 공용 액세스 네트워크 설정을 사용하지 않도록 설정하거나 모든 네트워크에 허용하여 변경하면 이전에 설정했을 수 있는 방화벽 IP가 손실됩니다.
IP 액세스 제어가 켜지면 Azure Portal에서는 IP 주소, IP 주소 범위 및 스위치를 지정하는 기능을 제공합니다. 스위치를 사용하면 다른 Azure 서비스 및 Azure Portal에 액세스할 수 있습니다. 이러한 스위치에 대한 세부 정보는 다음 섹션에 나와 있습니다.
참고 항목
Azure Cosmos DB 계정에 대해 IP 액세스 제어 정책을 사용하도록 설정한 후에는 허용되는 IP 주소 범위 목록 이외의 머신에서 시도하는 Azure Cosmos DB 계정에 대한 모든 요청이 거부됩니다. 액세스 제어의 무결성을 보장하기 위해 포털에서 Azure Cosmos DB 리소스를 찾아보는 기능도 차단됩니다.
Azure Portal의 요청 허용
프로그래밍 방식으로 IP 액세스 제어 정책을 사용하도록 설정하는 경우 일부 포털 기능을 계속 사용하려면 Azure Portal 서비스의 IP 주소를 ipRangeFilter 속성에 추가해야 할 수 있습니다.
이 옵션을 사용하도록 설정해야 하는 포털 시나리오는 다음과 같습니다.
- 특히 MongoDB용 API 또는 Apache Cassandra용 API의 경우 데이터 탐색기 또는 <cosmos.azure.com 사용하여 계정에 액세스>
- 모든 API의 경우 Azure Portal 내에서 다음 Azure Cosmos DB 블레이드를 사용합니다.
- 컬렉션 찾아보기
- Power BI
- Azure Synapse
다음 스크린샷과 같이 Azure Portal 미들웨어 IP 추가 옵션을 선택하여 Azure Portal에 액세스하도록 요청을 사용하도록 설정할 수 있습니다.
다음 스크린샷과 같이 Azure Portal 미들웨어 IP 주소가 별도의 목록에 추가됩니다. 저장을 클릭하여 데이터베이스 계정에 이러한 주소를 추가합니다. 미들웨어 IP 주소에 대한 자세한 내용은 이 문서에서 자세히 확인할 수 있습니다.
Azure Portal 미들웨어 IP 제거 옵션을 클릭한 다음 저장을 선택하여 Azure Portal 미들웨어 IP 주소를 제거할 수 있습니다.
Azure Portal 미들웨어 IP 주소
Azure Portal 미들웨어 IP 주소는 다음과 같습니다. 일부 IP 주소는 특정 데이터베이스 계정 API에만 필요합니다. 위에서 설명한 대로 포털에서 미들웨어 IP 주소를 추가하면 계정에 필요한 IP 주소만 추가됩니다.
예시:
NoSQL 계정에 대한 API의 경우 모든 범주의 IP 주소가 추가됩니다.
MongoDB용 API 계정의 경우 All 및 MongoDB 전용 범주의 IP 주소가 추가됩니다.
Azure 공용
데이터베이스 계정 API | IP 주소 |
---|---|
모두 | 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243 |
MongoDB 전용 | 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121 |
Apache Cassandra 전용 | 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237 |
Azure 중국
데이터베이스 계정 API | IP 주소 |
---|---|
모두 | 163.228.137.6, 143.64.170.142 |
MongoDB 전용 | 52.131.240.99, 143.64.61.130 |
Apache Cassandra 전용 | 40.73.99.146, 143.64.62.47 |
Azure 미국 정부
데이터베이스 계정 API | IP 주소 |
---|---|
모두 | 52.247.163.6, 52.244.134.181 |
MongoDB 전용 | 52.244.176.112, 52.247.148.42 |
Apache Cassandra 전용 | 52.244.50.101, 52.227.165.24 |
레거시 미들웨어 IP 주소
Cosmos DB 포털 서비스는 최근 새로운 미들웨어 IP 주소가 필요한 새 인프라로 전환되었습니다. 이러한 전환이 완료되면 이전 인프라에서 사용하는 레거시 IP 주소를 안전하게 제거할 수 있습니다. 계정에 방화벽 규칙에 있는 레거시 미들웨어 IP 주소가 있는 경우 Azure Portal 레거시 미들웨어 IP 제거 옵션이 표시됩니다. 해당 옵션을 선택한 다음 저장하여 레거시 IP 주소를 제거합니다.
레거시 IP 주소는 클라우드 환경에 따라 달라집니다.
Azure 환경 | IP 주소 |
---|---|
Azure 공용 | 104.42.195.92, 40.76.54.131, 52.176.6.30, 52.169.50.45, 52.187.184.26 |
Azure 중국 | 139.217.8.252, 52.176.6.30, 52.169.50.45, 52.187.184.26 |
Azure 미국 정부 | 52.244.48.71, 52.176.6.30, 52.169.50.45, 52.187.184.26 |
참고 항목
데이터 탐색기에서 Azure Cosmos DB 계정에 연결하는 데 문제가 있는 경우 데이터 탐색기 문제 해결 가이드를 검토하세요.
글로벌 Azure 데이터 센터 또는 Azure 내 다른 원본의 요청 허용
고정 IP를 제공하지 않는 서비스(예: Azure Stream Analytics 및 Azure Functions)에서 Azure Cosmos DB 계정에 액세스하는 경우 IP 방화벽을 사용하여 액세스를 제한할 수 있습니다. 다음 스크린샷에 표시된 것처럼 Azure 데이터 센터 내에서 연결 허용 옵션을 선택하여 Azure 내의 다른 소스에서 액세스할 수 있습니다.
이 옵션을 사용하면 IP 주소 0.0.0.0
이 허용된 IP 주소 목록에 추가됩니다. 0.0.0.0
주소는 Azure 데이터 센터 IP 범위에서 Azure Cosmos DB 계정에 대한 요청을 제한합니다. 이 설정은 Azure Cosmos DB 계정에 대해 다른 IP 범위의 액세스를 허용하지 않습니다.
참고 항목
publicNetworkAccess를 Disabled로 설정하면 Azure 데이터 센터 옵션 내에서 이 연결 허용보다 우선적으로 적용됩니다. 계정 생성 중 차단-public-network-access-참조
참고 항목
이 옵션은 Azure에 배포된 다른 고객 구독의 요청을 비롯한 Azure의 모든 요청을 허용하도록 방화벽을 구성합니다. 이 옵션에서 허용된 IP 목록은 광범위하므로 방화벽 정책의 효율성을 제한합니다. 요청이 정적 IP 또는 VNET의 서브넷에서 발생하지 않는 경우에만 이 옵션을 사용합니다. Azure Portal은 Azure에 배포되기 때문에 이 옵션을 선택하면 자동으로 Azure Portal에서 액세스하도록 허용합니다.
현재 IP의 요청
개발을 간소화하기 위해 Azure Portal을 통해 클라이언트 머신의 IP를 식별하여 허용된 목록에 추가할 수 있습니다. 그러면 머신에서 실행되는 앱은 Azure Cosmos DB 계정에 액세스할 수 있습니다.
포털은 클라이언트 IP 주소를 자동으로 검색합니다. 이 주소는 머신의 클라이언트 IP 주소이거나 네트워크 게이트웨이의 IP 주소일 수 있습니다. 프로덕션에 대한 워크로드를 수행하기 전에 이 IP 주소를 제거해야 합니다.
IP 목록에 현재 IP를 추가하려면 현재 IP 추가를 선택합니다. 그런 다음 저장을 선택합니다.
클라우드 서비스의 요청
Azure에서 클라우드 서비스는 Azure Cosmos DB를 사용하여 중간 계층 서비스 논리를 호스팅하는 일반적인 방법입니다. 클라우드 서비스에서 Azure Cosmos DB 계정에 액세스할 수 있게 하려면 IP 액세스 제어 정책을 구성하여 클라우드 서비스의 공용 IP 주소를 Azure Cosmos DB 계정에 연결된 허용된 IP 주소 목록에 추가해야 합니다. 이렇게 하면 클라우드 서비스의 모든 역할 인스턴스가 Azure Cosmos DB 계정에 액세스할 수 있습니다.
다음 스크린샷처럼 Azure Portal에서 클라우드 서비스의 IP 주소를 검색할 수 있습니다.
역할 인스턴스를 추가하여 클라우드 서비스를 스케일 아웃할 때 이러한 새 인스턴스는 동일한 클라우드 서비스에 포함되므로 자동으로 Azure Cosmos DB 계정에 대한 액세스 권한을 갖습니다.
가상 머신의 요청
Azure Cosmos DB를 사용하여 중간 계층 서비스를 호스트하는 데 가상 머신 또는 가상 머신 확장 집합을 사용할 수도 있습니다. 가상 머신에서 액세스할 수 있도록 Azure Cosmos DB 계정을 구성하려면 IP 액세스 제어 정책을 구성하여 가상 머신 및/또는 가상 머신 확장 집합의 공용 IP 주소를 Azure Cosmos DB 계정에 허용되는 IP 주소 중 하나로 구성해야 합니다.
다음 스크린샷처럼 Azure Portal에서 가상 머신의 IP 주소를 검색할 수 있습니다.
그룹에 가상 머신 인스턴스를 추가하면 Azure Cosmos DB 계정에 대한 액세스 권한을 자동으로 부여합니다.
인터넷의 요청
인터넷에 있는 컴퓨터에서 Azure Cosmos DB 계정에 액세스하는 경우 머신의 클라이언트 IP 주소 또는 IP 주소 범위를 사용자 계정의 허용되는 IP 주소 목록에 추가해야 합니다.
방화벽에 아웃바운드 규칙 추가
방화벽 설정에 추가할 아웃바운드 IP 범위의 현재 목록에 액세스하려면 Azure IP 범위 및 서비스 태그 다운로드를 참조하세요.
목록을 자동화하려면 서비스 태그 검색 API 사용을 참조하세요.
Resource Manager 템플릿을 사용하여 IP 방화벽 구성
Azure Cosmos DB 계정에 대한 액세스 제어를 구성하려면 Resource Manager 템플릿이 허용된 IP 범위 배열로 ipRules 속성을 지정하는지 확인합니다. 이미 배포된 Azure Cosmos DB 계정에 IP 방화벽을 구성하는 경우 locations
배열이 현재 배포된 것과 일치하는지 확인합니다. locations
배열과 기타 속성을 동시에 수정할 수 없습니다. Azure Cosmos DB용 Azure Resource Manager 템플릿에 대한 자세한 내용과 샘플은 Azure Cosmos DB용 Azure Resource Manager 템플릿을 참조하세요.
Important
ipRules 속성은 API 버전 2020-04-01에 도입되었습니다. 이전 버전에서는 쉼표로 구분된 IP 주소 목록인 ipRangeFilter 속성이 대신 노출되었습니다.
예시는 API 버전 2020-04-01 이상에서 ipRules 속성이 노출되는 방식을 보여 줍니다.
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"name": "[variables('accountName')]",
"apiVersion": "2020-04-01",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": "[parameters('automaticFailover')]",
"ipRules": [
{
"ipAddressOrRange": "13.91.105.215"
},
{
"ipAddressOrRange": "4.210.172.107"
},
{
"ipAddressOrRange": "13.88.56.148"
},
{
"ipAddressOrRange": "40.91.218.243"
}
]
}
}
다음은 2020-04-01 이전의 모든 API 버전에 대한 동일한 예입니다.
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"name": "[variables('accountName')]",
"apiVersion": "2019-08-01",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": "[parameters('automaticFailover')]",
"ipRangeFilter":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
}
}
Azure CLI를 사용하여 IP 액세스 제어 정책 구성
다음 명령은 IP 액세스 제어를 사용하여 Azure Cosmos DB 계정을 만드는 방법을 보여줍니다.
# Create an Azure Cosmos DB account with default values and IP Firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'
# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
-n $accountName \
-g $resourceGroupName \
--locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
--locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
--ip-range-filter $ipRangeFilter
PowerShell을 사용하여 IP 액세스 제어 정책 구성
다음 스크립트는 IP 액세스 제어를 사용하여 Azure Cosmos DB 계정을 만드는 방법을 보여줍니다.
# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")
$locations = @(
@{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
@{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)
# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
"databaseAccountOfferType"="Standard";
"locations"=$locations;
"ipRules"=$ipRules
}
New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
-ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
-Name $accountName -PropertyObject $CosmosDBProperties
IP 액세스 제어 정책 관련 문제 해결
다음 옵션을 사용하여 IP 액세스 제어 정책 관련 문제를 해결할 수 있습니다.
Azure Portal
Azure Cosmos DB 계정에 대해 IP 액세스 제어 정책을 사용하도록 설정하면 허용되는 IP 주소 범위 목록 이외의 머신에서 시도하는 계정에 대한 모든 요청이 차단됩니다. 컨테이너 탐색 및 문서 쿼리와 같은 포털 데이터 평면 작업을 사용하도록 설정하려면 포털의 방화벽 창을 사용하여 Azure Portal 액세스를 명시적으로 허용해야 합니다.
SDK
허용 목록에 없는 머신에서 SDK를 사용하여 Azure Cosmos DB 리소스에 액세스하는 경우 일반적인 403 사용 권한 없음 응답이 추가 정보 없이 반환됩니다. 계정에 대해 허용된 IP 목록을 확인하고 Azure Cosmos DB 계정에 올바른 정책 구성이 적용되는지 확인합니다.
차단된 요청의 원본 IP
Azure Cosmos DB 계정에 진단 로깅을 사용하도록 설정합니다. 이러한 로그는 각 요청 및 응답을 보여줍니다. 방화벽 관련 메시지가 403 반환 코드와 함께 로깅됩니다. 이러한 메시지를 필터링하면 차단된 요청에 대한 원본 IP를 확인할 수 있습니다. Azure Cosmos DB 진단 로깅을 확인합니다.
Azure Cosmos DB에 대해 서비스 엔드포인트를 설정한 서브넷의 요청
Azure Cosmos DB에 대한 서비스 엔드포인트가 활성화된 가상 네트워크에 위치한 서브넷의 요청은 가상 네트워크 및 서브넷 ID를 Azure Cosmos DB 계정에 전송합니다. 이러한 요청에는 원본의 공용 IP가 없으므로 IP 필터에 의해 거부됩니다. 가상 네트워크에 있는 특정 서브넷의 액세스를 허용하려면 Azure Cosmos DB 계정의 가상 네트워크 및 서브넷 기반 액세스를 구성하는 방법에 설명된 대로 액세스 제어 목록을 추가합니다. 방화벽 규칙을 적용하는 데 최대 15분이 걸릴 수 있으며 이 기간 동안에는 방화벽에서 일관되지 않은 동작을 발생시킬 수 있습니다.
허용된 주소 목록의 개인 IP 주소
개인 IP 주소를 포함하는 허용된 주소 목록을 사용하여 Azure Cosmos DB 계정을 만들거나 업데이트하지 못합니다. 목록에 개인 IP 주소가 지정되어 있지 않은지 확인합니다.