가상 네트워크 아키텍처 4 - SQL 데이터베이스 프라이빗 엔드포인트

5405 단어

요약



이 기사는 가상 네트워크 아키텍처 시리즈의 Part.4입니다. api-management-vnet에서 Azure SQL 데이터베이스가 포함된 프라이빗 엔드포인트에 대해 자세히 설명합니다.








  • 목차


  • Private Endpoint configuration
  • Access to SQL Database
  • SQL project update

  • 프라이빗 엔드포인트 구성

  • Private Endpoint: Deploy the private endpoint and connect it to SQL Database and its subnet in PrivateEndpoint.bicep .

  • SqlServerId:existingSql.id
    VirtualNetwork2SubnetIdSql:existingVnet2.properties.subnets[2].id
    
    resource PrivateEndpointSql 'Microsoft.Network/privateEndpoints@2021-03-01' = {
      properties: {
        privateLinkServiceConnections: [
          {
            properties: {
              privateLinkServiceId: SqlServerId
              groupIds: [
                'sqlServer'
              ]
            }
          }
        ]
        subnet: {
          id: VirtualNetwork2SubnetIdSql
          properties: {
            privateEndpointNetworkPolicies: 'Enabled'
          }
        }
      }
    }
    



  • 사설 DNS: PrivateDns2.bicep에 DNS 이름이 privatelink.database.windows.net인 사설 DNS를 배포합니다.

  • var pdns_name_sql = 'privatelink${environment().suffixes.sqlServerHostname}'
    
    resource PrivateDnsSql 'Microsoft.Network/privateDnsZones@2020-06-01' = {
      name: pdns_name_sql
      location: 'global'
    }
    



  • 가상 네트워크 링크: 배포된 개인 DNS를 SQL Server 서브넷이 있는 가상 네트워크에 연결합니다PrivateDns2.bicep .

  • VirtualNetwork2Id:existingVnet2.id
    
    resource VnetLinkSql 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
      name: '${PrivateDnsSql.name}/${PrivateDnsSql.name}-link'
      location: 'global'
      properties: {
        registrationEnabled: false
        virtualNetwork: {
          id: VirtualNetwork2Id
        }
      }
    }
    



  • 프라이빗 DNS A 레코드: DNS A 레코드를 생성하고 PrivateDns2.bicep에 배포된 프라이빗 엔드포인트의 IP 주소를 설정합니다.

  • output PrivateEndpointSqlIpAddress string = PrivateEndpointSql.properties.customDnsConfigs[0].ipAddresses[0]
    
    resource PrivateDnsASql 'Microsoft.Network/privateDnsZones/A@2020-06-01' = {
      name: '${PrivateDnsSql.name}/${SqlServerName}'
      properties: {
        ttl: 3600
        aRecords: [
          {
            ipv4Address: PrivateEndpointSqlIpAddress
          }
        ]
      }
    }
    


    SQL 데이터베이스에 대한 액세스

    App Service and Functions need to access the SQL Database to insert and extract the data records. Both can access through V-net integration and Private Endpoint. In SqlDatabase2.bicep , 공용 네트워크 액세스가 비활성화되어 아무도 공용 IP를 통해 액세스할 수 없습니다.

    resource SqlServer 'Microsoft.Sql/servers@2021-02-01-preview' = {
      properties: {
        publicNetworkAccess: 'Disabled'
      }
    }
    




    SQL 프로젝트 업데이트

    The biggest problem is when you want to update SQL projects including data schema on the Azure SQL Database. In this sample template, you cannot update the SQL project because a Linux based self-hosted agent does not support build and deployment of SQL Database projects. On the other hand, a Windows based self-hosted agent in the docker container on Azure Container Instance cannot be deployed on the virtual network as I mentioned in the previous article . Possible workaround is to create a Windows based self-hosted agent on a Virtual Machine, to change IP filtering rules when in code deployment, or to wait for the Windows docker container supporting the virtual network deployment.

    좋은 웹페이지 즐겨찾기