분할-병합 보안 구성

적용 대상:Azure SQL Database

분할/병합 서비스를 사용하려면 보안을 올바르게 구성해야 합니다. 이 서비스는 Azure SQL Database의 탄력적 크기 조정 기능의 일부입니다. 자세한 내용은 탄력적 크기 조정 분할 및 병합 서비스 자습서를 참조하세요.

인증서 구성

인증서는 두 가지 방법으로 구성합니다.

  1. TLS/SSL 인증서를 구성하는 방법
  2. 클라이언트 인증서를 구성하는 방법

인증서를 가져오는 방법

인증서는 공용 CA(인증 기관) 또는 Windows 인증서 서비스에서 가져올 수 있습니다. 이는 인증서를 가져오는 기본 방법입니다.

이러한 옵션을 사용할 수 없는 경우 자체 서명된 인증서를 생성할 수 있습니다.

인증서를 생성하는 도구

도구를 실행하는 방법

TLS/SSL 인증서를 구성하는 방법

통신을 암호화하고 서버를 인증하려면 TLS/SSL 인증서가 필요합니다. 아래 세 가지 시나리오 중 가장 적합한 시나리오를 선택하고 모든 단계를 실행합니다.

자체 서명된 새로운 인증서 만들기

  1. 자체 서명된 인증서 만들기
  2. 자체 서명된 TLS/SSL 인증서용 PFX 파일 만들기
  3. 클라우드 서비스에 TLS/SSL 인증서 업로드
  4. 서비스 구성 파일에서 TLS/SSL 인증서 업데이트
  5. TLS/SSL 인증 기관 가져오기

인증서 저장소에서 기존 인증서를 사용하려면

  1. 인증서 저장소에서 TLS/SSL 인증서 내보내기
  2. 클라우드 서비스에 TLS/SSL 인증서 업로드
  3. 서비스 구성 파일에서 TLS/SSL 인증서 업데이트

PFX 파일에서 기존 인증서를 사용하는 방법

  1. 클라우드 서비스에 TLS/SSL 인증서 업로드
  2. 서비스 구성 파일에서 TLS/SSL 인증서 업데이트

클라이언트 인증서를 구성하려면

서비스에 대한 요청을 인증하려면 클라이언트 인증서가 필요합니다. 아래 세 가지 시나리오 중 가장 적합한 시나리오를 선택하고 모든 단계를 실행합니다.

클라이언트 인증서 끄기

  1. 클라이언트 인증서 기반 인증 끄기

새 자체 서명된 클라이언트 인증서 발급

  1. 자체 서명된 인증 기관 만들기
  2. 클라우드 서비스에 CA 인증서 업로드
  3. 서비스 구성 파일의 CA 인증서 업데이트
  4. 클라이언트 인증서 발급
  5. 클라이언트 인증서용 PFX 파일 만들기
  6. 클라이언트 인증서 가져오기
  7. 클라이언트 인증서 지문 복사
  8. 서비스 구성 파일에서 허용된 클라이언트 구성

기존 클라이언트 인증서 사용

  1. CA 공개 키 찾기
  2. 클라우드 서비스에 CA 인증서 업로드
  3. 서비스 구성 파일의 CA 인증서 업데이트
  4. 클라이언트 인증서 지문 복사
  5. 서비스 구성 파일에서 허용된 클라이언트 구성
  6. 클라이언트 인증서 해지 확인 구성

허용된 IP 주소

특정 범위의 IP 주소에서만 서비스 엔드포인트에 액세스하도록 제한할 수 있습니다.

저장소를 위해 암호화를 구성하는 방법

메타데이터 저장소에 저장된 자격 증명을 암호화하려면 인증서가 필요합니다. 아래 세 가지 시나리오 중 가장 적합한 시나리오를 선택하고 모든 단계를 실행합니다.

새 자체 서명된 인증서 사용

  1. 자체 서명된 인증서 만들기
  2. 자체 서명된 암호화 인증서용 PFX 파일 만들기
  3. 클라우드 서비스에 암호화 인증서 업로드
  4. 서비스 구성 파일의 암호화 인증서 업데이트

인증서 저장소에서 기존 인증서 사용

  1. 인증서 저장소에서 암호화 인증서 내보내기
  2. 클라우드 서비스에 암호화 인증서 업로드
  3. 서비스 구성 파일의 암호화 인증서 업데이트

PFX 파일에서 기존 인증서 사용

  1. 클라우드 서비스에 암호화 인증서 업로드
  2. 서비스 구성 파일의 암호화 인증서 업데이트

기본 구성

기본 구성은 HTTPS 엔드포인트에 대한 모든 액세스를 거부합니다. 이러한 엔드포인트에 대한 요청에서는 데이터베이스 자격 증명과 같은 중요한 정보가 전송될 수 있으므로 이 설정을 사용하는 것이 좋습니다. 기본 구성에서는 HTTPS 엔드포인트에 대한 모든 액세스가 허용됩니다. 이 설정은 추가적으로 제한될 수 있습니다.

구성 변경

서비스 구성 파일<EndpointAcls> 섹션에서 엔드포인트에 적용되는 액세스 제어 규칙 그룹을 구성합니다.

<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpIn" accessControl="DenyAll" />
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="AllowAll" />
</EndpointAcls>

액세스 제어 그룹의 규칙은 서비스 구성 파일의 <AccessControl name=""> 섹션에서 구성합니다.

이 형식은 네트워크 액세스 제어 목록 설명서에서 설명합니다. 예를 들어 100.100.0.0~100.100.255.255 범위의 IP만 HTTPS 엔드포인트에 액세스하도록 허용하려면 규칙은 다음과 같습니다.

<AccessControl name="Retricted">
    <Rule action="permit" description="Some" order="1" remoteSubnet="100.100.0.0/16"/>
    <Rule action="deny" description="None" order="2" remoteSubnet="0.0.0.0/0" />
</AccessControl>
<EndpointAcls>
    <EndpointAcl role="SplitMergeWeb" endPoint="HttpsIn" accessControl="Restricted" />
</EndpointAcls>

서비스 거부 방지

서비스 거부 공격을 감지하고 방지하기 위해 지원하는 메커니즘은 두 가지입니다.

  • 원격 호스트당 동시 요청 수 제한(기본적으로 꺼져 있음)
  • 원격 호스트당 액세스 속도 제한(기본적으로 켜져 있음)

이러한 메커니즘은 IIS의 동적 IP 보안에서 자세히 설명하는 기능을 기반으로 합니다. 이 구성을 변경하는 경우 다음 요소에 주의해야 합니다.

  • 원격 호스트 정보에 대한 프록시 및 NAT(Network Address Translation) 디바이스의 동작
  • 웹 역할의 모든 리소스에 대한 각 요청을 고려합니다(예: 스크립트, 이미지 등 로드)

동시 액세스 수 제한

이 동작을 구성하는 설정은 다음과 같습니다.

<Setting name="DynamicIpRestrictionDenyByConcurrentRequests" value="false" />
<Setting name="DynamicIpRestrictionMaxConcurrentRequests" value="20" />

이 보호를 활성화하려면 DynamicIpRestrictionDenyByConcurrentRequests를 true로 변경합니다.

액세스 속도 제한

이 동작을 구성하는 설정은 다음과 같습니다.

<Setting name="DynamicIpRestrictionDenyByRequestRate" value="true" />
<Setting name="DynamicIpRestrictionMaxRequests" value="100" />
<Setting name="DynamicIpRestrictionRequestIntervalInMilliseconds" value="2000" />

거부한 요청에 대한 응답 구성

다음 설정은 거부한 요청에 대한 응답을 구성합니다.

<Setting name="DynamicIpRestrictionDenyAction" value="AbortRequest" />

지원하는 다른 값을 위해 IIS의 동적 IP 보안 설명서를 참조하세요.

서비스 인증서를 구성하기 위한 작업

이 주제는 참조용으로만 사용합니다. 다음에서 설명하는 구성 단계를 따릅니다.

  • TLS/SSL 인증서 구성
  • 클라이언트 인증서 구성

자체 서명된 인증서 만들기

실행:

makecert ^
  -n "CN=myservice.cloudapp.net" ^
  -e MM/DD/YYYY ^
  -r -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.1" ^
  -a sha256 -len 2048 ^
  -sv MySSL.pvk MySSL.cer

사용자 지정 방법:

  • -n(서비스 URL 포함). 와일드카드("CN=*.cloudapp.net") 및 대체 이름("CN=myservice1.cloudapp.net, CN=myservice2.cloudapp.net")을 지원합니다.
  • -e(인증서 만료 날짜 포함) 강력한 암호를 만들고 메시지가 나타나면 이를 지정합니다.

자체 서명된 TLS/SSL 인증서용 PFX 파일 만들기

실행:

pvk2pfx -pvk MySSL.pvk -spc MySSL.cer

암호를 입력하고 다음 옵션을 사용하여 인증서를 내보냅니다.

  • 예, 프라이빗 키를 내보냅니다
  • 확장된 속성 모두 내보내기

인증서 저장소에서 TLS/SSL 인증서 내보내기

  • 인증서 찾기
  • 작업 -> 모든 작업 -> 내보내기를 클릭합니다.
  • 다음 옵션을 사용하여 인증서를 .PFX 파일로 내보냅니다.
    • 예, 프라이빗 키를 내보냅니다
    • 가능한 경우 인증서 경로의 모든 인증서 포함 *확장 속성 모두 내보내기

클라우드 서비스에 TLS/SSL 인증서 업로드

TLS 키 쌍이 포함된 기존 또는 생성된 .PFX 파일과 인증서를 업로드합니다.

  • 프라이빗 키 정보를 보호하는 암호 입력

서비스 구성 파일에서 TLS/SSL 인증서 업데이트

클라우드 서비스에 업로드한 인증서의 지문으로 서비스 구성 파일의 다음 설정에 대한 지문 값을 업데이트합니다.

<Certificate name="SSL" thumbprint="" thumbprintAlgorithm="sha1" />

TLS/SSL 인증 기관 가져오기

서비스와 통신할 모든 계정/컴퓨터에서 다음 단계를 수행합니다.

  • Windows 탐색기에서 CER 파일을 두 번 클릭합니다.
  • 인증서 대화 상자에서 인증서 설치를 클릭합니다.
  • 인증서를 신뢰할 수 있는 루트 인증 기관 저장소로 가져오기

클라이언트 인증서 기반 인증 끄기

클라이언트 인증서 기반 인증만 지원하며, 이를 사용하지 않으면 다른 메커니즘(예: Microsoft Azure Virtual Network)이 없는 한 서비스 엔드포인트에 대한 공용 액세스를 허용하게 됩니다.

서비스 구성 파일에서 이러한 설정을 false로 변경하여 기능을 해제합니다.

<Setting name="SetupWebAppForClientCertificates" value="false" />
<Setting name="SetupWebserverForClientCertificates" value="false" />

그런 다음 CA 인증서 설정에서 TLS/SSL 인증서와 동일한 지문을 복사합니다.

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

자체 서명된 인증 기관 만들기

다음 단계를 실행하여 인증 기관의 역할을 수행하는 자체 서명된 인증서를 만듭니다.

makecert ^
-n "CN=MyCA" ^
-e MM/DD/YYYY ^
 -r -cy authority -h 1 ^
 -a sha256 -len 2048 ^
  -sr localmachine -ss my ^
  MyCA.cer

사용자 지정 방법

  • -e(인증서 만료 날짜 포함)

CA 공개 키 찾기

모든 클라이언트 인증서는 서비스에서 신뢰하는 인증 기관에서 발급한 것이어야 합니다. 클라우드 서비스에 업로드할 수 있도록 인증에 사용할 클라이언트 인증서를 발급한 인증 기관의 공용 키를 찾습니다.

공용 키가 포함된 파일을 사용할 수 없는 경우 인증서 저장소에서 이 파일을 내보냅니다.

  • 인증서 찾기
    • 동일한 인증 기관에서 발급한 클라이언트 인증서 검색
  • 인증서를 두 번 클릭합니다.
  • 인증서 대화 상자에서 인증 경로 탭을 선택합니다.
  • 경로에서 CA 항목을 두 번 클릭합니다.
  • 인증서 속성을 기록합니다.
  • 인증서 대화 상자를 닫습니다.
  • 인증서 찾기
    • 위에서 설명한 CA를 검색합니다.
  • 작업 -> 모든 작업 -> 내보내기를 클릭합니다.
  • 인증서를 다음 옵션을 사용하여 .CER로 내보냅니다.
    • 아니요, 프라이빗 키를 내보내지 않습니다
    • 가능하면 인증 경로에 있는 인증서 모두 포함
    • 확장 속성을 모두 내보냅니다.

클라우드 서비스에 CA 인증서 업로드

CA 공개 키를 포함한 기존 또는 생성한 .CER 파일과 인증서를 업로드합니다.

서비스 구성 파일의 CA 인증서 업데이트

클라우드 서비스에 업로드한 인증서의 지문으로 서비스 구성 파일의 다음 설정에 대한 지문 값을 업데이트합니다.

<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />

동일한 지문으로 다음 설정의 값을 업데이트합니다.

<Setting name="AdditionalTrustedRootCertificationAuthorities" value="" />

클라이언트 인증서 발급

서비스에 액세스할 권한을 보유한 각 개인은 단독 사용을 위해 클라이언트 인증서를 발급받아야 하며 해당 프라이빗 키를 보호하기 위한 강력한 암호를 선택해야 합니다.

자체 서명된 CA 인증서를 생성하고 저장하는 동일한 컴퓨터에서 다음 단계를 실행해야 합니다.

makecert ^
  -n "CN=My ID" ^
  -e MM/DD/YYYY ^
  -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.2" ^
  -a sha256 -len 2048 ^
  -in "MyCA" -ir localmachine -is my ^
  -sv MyID.pvk MyID.cer

사용자 지정:

  • -n 및 이 인증서로 인증할 클라이언트의 ID
  • -e 및 인증서 만료 날짜
  • MyID.pvk 및 MyID.cer과 이 클라이언트 인증서의 고유한 파일 이름

이 명령은 암호를 만든 다음 한 번 사용하기를 요청하는 메시지를 표시합니다. 강력한 암호를 사용하세요.

클라이언트 인증서용 PFX 파일 만들기

생성된 각 클라이언트 인증서에 대해 다음을 실행합니다.

pvk2pfx -pvk MyID.pvk -spc MyID.cer

사용자 지정:

MyID.pvk and MyID.cer with the filename for the client certificate

암호를 입력하고 다음 옵션을 사용하여 인증서를 내보냅니다.

  • 예, 프라이빗 키를 내보냅니다
  • 확장된 속성 모두 내보내기
  • 이 인증서를 발급하는 개인이 내보내기 암호를 선택해야 합니다.

클라이언트 인증서 가져오기

클라이언트 인증서를 발급받은 각 개인은 서비스와 통신하는 데 사용할 컴퓨터에서 키 쌍을 가져와야 합니다.

  • Windows 탐색기에서 .PFX 파일 두 번 클릭
  • 최소한 다음 옵션을 사용하여 개인 저장소에 인증서를 가져옵니다.
    • 확인한 확장 속성 모두 포함

클라이언트 인증서 지문 복사

클라이언트 인증서를 발급받은 각 개인은 서비스 구성 파일에 추가할 인증서의 지문을 가져오기 위해 다음 단계를 따라야 합니다.

  • certmgr.exe 실행
  • 개인 탭 선택
  • 인증에 사용할 클라이언트 인증서를 두 번 클릭합니다.
  • 열리는 인증서 대화 상자에서 세부 정보 탭 선택
  • 모두 표시 중인지 확인
  • 목록에서 지문이라는 필드 선택
  • 지문 값 복사
    • 첫 자리 앞에 표시되지 않는 유니코드 문자 삭제
    • 모든 공백 삭제

서비스 구성 파일에서 허용된 클라이언트 구성

쉼표로 구분되어 있으며 서비스에 대한 액세스가 허용된 클라이언트 인증서의 지문 목록으로 서비스 구성 파일에서 다음 설정의 값을 업데이트합니다.

<Setting name="AllowedClientCertificateThumbprints" value="" />

클라이언트 인증서 해지 확인 구성

기본 설정은 클라이언트 인증서 해지 상태를 인증 기관과 확인하지 않습니다. 검사를 켜려면 클라이언트 인증서를 발급한 인증 기관에서 이러한 검사 지원하는 경우 X509RevocationMode 열거형에 정의된 값 중 하나를 사용하여 다음 설정을 변경합니다.

<Setting name="ClientCertificateRevocationCheck" value="NoCheck" />

자체 서명된 암호화 인증서용 PFX 파일 만들기

암호화 인증서를 위해 다음을 실행합니다.

pvk2pfx -pvk MyID.pvk -spc MyID.cer

사용자 지정:

MyID.pvk and MyID.cer with the filename for the encryption certificate

암호를 입력하고 다음 옵션을 사용하여 인증서를 내보냅니다.

  • 예, 프라이빗 키를 내보냅니다
  • 확장된 속성 모두 내보내기
  • 클라우드 서비스에 인증서를 업로드할 때 암호가 필요합니다.

인증서 저장소에서 암호화 인증서 내보내기

  • 인증서 찾기
  • 작업 -> 모든 작업 -> 내보내기를 클릭합니다.
  • 다음 옵션을 사용하여 인증서를 .PFX 파일로 내보냅니다.
    • 예, 프라이빗 키를 내보냅니다
    • 가능하면 인증 경로에 있는 모든 인증서를 포함
  • 확장된 속성 모두 내보내기

클라우드 서비스에 암호화 인증서 업로드

암호화 키 쌍이 포함된 기존 또는 생성된 .PFX 파일을 업로드합니다.

  • 프라이빗 키 정보를 보호하는 암호 입력

서비스 구성 파일의 암호화 인증서 업데이트

클라우드 서비스에 업로드한 인증서의 지문으로 서비스 구성 파일에서 다음 설정의 지문 값을 업데이트합니다.

<Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

일반적인 인증서 작업

  • TLS/SSL 인증서 구성
  • 클라이언트 인증서 구성

인증서 찾기

다음 단계를 수행합니다.

  1. mmc.exe를 실행합니다.
  2. 파일 -> 스냅인 추가/제거...
  3. 인증서를 선택합니다.
  4. 추가를 클릭합니다.
  5. 인증서 저장소 위치를 선택합니다.
  6. Finish를 클릭합니다.
  7. 확인을 클릭합니다.
  8. 인증서를 확장합니다.
  9. 인증서 저장소 노드를 확장합니다.
  10. 인증서 자식 노드를 확장합니다.
  11. 목록에서 인증서를 선택합니다.

인증서 내보내기

인증서 내보내기 마법사에서:

  1. 다음을 클릭합니다.
  2. 를 선택한 다음 프라이빗 키 내보내기를 선택합니다.
  3. 다음을 클릭합니다.
  4. 원하는 출력 파일 형식을 선택합니다.
  5. 원하는 옵션을 확인합니다.
  6. 암호를 확인합니다.
  7. 강력한 암호를 입력하고 확인합니다.
  8. 다음을 클릭합니다.
  9. 인증서를 저장할 파일 이름을 입력하거나 찾습니다(.PFX 확장 사용용).
  10. 다음을 클릭합니다.
  11. Finish를 클릭합니다.
  12. 확인을 클릭합니다.

인증서 가져오기

인증서 가져오기 마법사에서:

  1. 저장 위치를 선택합니다.

    • 현재 사용자가 실행하고 있는 프로세스만 서비스에 액세스할 경우 현재 사용자를 선택합니다
    • 컴퓨터의 다른 프로세스에서 서비스에 액세스하는 경우 로컬 컴퓨터 를 선택합니다.
  2. 다음을 클릭합니다.

  3. 파일에서 가져오는 경우 파일 경로를 확인합니다.

  4. .PFX 파일 가져올 때:

    1. 프라이빗 키를 보호하는 암호를 입력합니다
    2. 가져오기 옵션을 선택합니다.
  5. 다음 저장소에서 인증서 "배치"를 선택합니다

  6. 찾아보기를 클릭합니다.

  7. 원하는 저장소를 선택합니다.

  8. Finish를 클릭합니다.

    • 신뢰할 수 있는 루트 인증 기관 저장소를 선택한 경우 를 클릭합니다.
  9. 모든 대화 상자 창에서 확인을 클릭합니다.

인증서 업로드

Azure Portal에서

  1. 클라우드 서비스를 선택합니다.
  2. 클라우드 서비스를 선택합니다.
  3. 위쪽 메뉴에서 인증서를 클릭합니다.
  4. 아래쪽 메뉴 모음에서 업로드를 클릭합니다.
  5. 인증서 파일을 선택합니다.
  6. .PFX 파일인 경우 프라이빗 키의 암호를 입력합니다.
  7. 완료되면 목록의 새 항목에서 인증서 지문을 복사합니다.

기타 보안 고려 사항

이 문서에서 설명한 TLS 설정은 HTTPS 엔드포인트를 사용할 때 서비스와 해당 클라이언트 간의 통신을 암호화합니다. 이는 데이터베이스 액세스 및 잠재적으로 다른 중요한 정보에 대한 자격 증명이 통신에 포함되어 있기 때문에 중요합니다. 단, 서비스에서 Microsoft Azure 구독의 메타데이터 스토리지에 대해 제공한 Azure SQL Database의 내부 테이블에 있는 자격 증명을 비롯하여 내부 상태를 유지합니다. 해당 데이터베이스는 서비스 구성 파일(.CSCFG 파일)에서 다음 설정의 일부로 정의됩니다.

<Setting name="ElasticScaleMetadata" value="Server=…" />

이 데이터베이스에 저장된 자격 증명은 암호화되어 있습니다. 그러나 서비스 배포의 웹 및 작업자 역할이 모두 메타데이터 데이터베이스에 액세스할 수 있고 저장된 자격 증명의 암호화 및 암호 해독에 사용하는 인증서에 액세스할 수 있으므로 웹 및 작업자 역할을 모두 최신 상태로 유지하고 안전하게 유지하는 것이 좋습니다.

추가 리소스

아직 탄력적인 데이터베이스 도구를 사용 하지 않나요? 시작 가이드를 확인합니다. 질문이 있는 경우 SQL Database에 대한 Microsoft Q&A 질문 페이지에서 문의하고, 기능 요청이 있는 경우 SQL Database 사용자 의견 포럼에서 새로운 아이디어를 추가하거나 기존 아이디어에 투표해 주세요.