6차 체험의 주제가 “SQL Azure”이다 보니 관련 자료를 이것저것 찾아보다가, 문득  REST API를 제공한다는 걸 보게 되어 잠깐 이를 테스트해보기로 합니다. 이번 후기에서 살펴볼 내용은 아래와 같습니다.

 

  • 공개/개인 인증서 키 생성 및 등록
  • REST API 사용 검증 샘플
  • 방화벽 Rule 생성 콘솔 어플리케이션 테스트 

 

1. 공개키 인증서 생성. Azure의 관리 기능을 REST나 .NET 등의 개발모듈에서 사용하기 위해서는 Azure에 인증서가 업로드가 되어 있어야 하고, 이 인증서를 사전에 만드는 작업을 진행합니다.

Windows Azure 와 연동할 인증서 파일을 생성해야 하는군요. x.509 v3를 지원하는 인증서 파일을 생성해야 합니다. Visual Studio 가 설치되어 계시다면 “Visual Studio  명령 프롬프트”를 실행한 후 인증서파일을 저장할 경로로 이동하여 아래와 같이 입력합니다.

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

[적용 결과]  -> D 루트 드라이브에 StarhuntCert.cer  파일이 생성됩니다.
인증서를 생성하는 방법은 http://msdn.microsoft.com/ko-kr/library/gg432987.aspx 를 참조하시면 IIS를 사용하는 방법도 추가적으로 잘 나와 있습니다.

image

 

2. 개인키 인증서 생성. 방금 만든 공개키 인증서에 매핑되는 개인키가 추가적으로 필요합니다. 이는 REST API를 호출할 때 코드에서 이 개인인증서 파일정보를 사용하게 됩니다.

a. 실행 명령 창에서 “cermgr.msc”를 입력하면 인증서 관리 MMC 창이 뜨게 되고, 개인용 –> 인증서 노드를 보시면 앞서 만들었던 인증서항목이 보이게 됩니다.

image

 

b. 해당 인증서를 선택하고 오른쪽 마우스를 클릭하고 [모든작업 –> 내보내기]를 선택합니다.

image

 

c. 인증서 내보내기 마법사 창이 아래와 같이 뜨게 됩니다. “다음”을 선택하시구요.

image

 

d. “예, 개인 키를 내보냅니다”를 선택하고 다음으로 진행합니다.

image

 

e. 사용할 형식에 개인정보 교환 기본 선택되어 있는 걸로 두고 다음으로 진행합니다.

image

 

f. 암호를 입력합니다.

image

 

g. 개인 키 파일을 저장할 경로와 키파일명을 지정합니다.

image

 

h. 아래와 같이 최종 정보 확인 후 마침을 선택하게 되면 지정된 경로에 파일이 만들어지게 됩니다.

image

 

3. 공개키 인증서를 포탈에 업로드합니다.

a. 애저 포탈에 접속해서 왼쪽 메뉴 중 제일 하단의 “설정”메뉴를 선택하면 첫번째 탭에 관리인증서페이지가 열립니다.

image

 

b. 하단의 “업로드” 버튼을 클릭하고 아래와 같이 파일 찾기 화면에서 앞서 만들었던 공개키 인증서(.cert)를 선택하여 업로드합니다.

image

 

c. 이번 체험의 경우 구독 종류가 “3개월 무료체험”과 “종량제”가 있는데 현재 만들어진 DB들이 종량제 관련 항목들이라 “종량제”를 선택 한후 완료합니다.

image

 

d. 정상적으로 업로드가 완료되면  아래와 같이 앞서 만들었던 인증서가 리스트에 나타난 걸 확인할 수 있습니다.

image

 

4. REST 연결 클라이언트 검증

SQL Azure의 Rest 호출을 위한 인증서 작업이 마무리 되었기 때문에 간단한 검증용 클라이언트를 만들어 테스트를 진행하였습니다.

a. Visual Studio를 사용하여 간단한 콘솔 어플리케이션을 하나 만들고 아래와 같이 서버 정보를 얻어오는 REST를 호출해보기로 합니다.

image

ClientCertification 정보에 2번에서 만들었던 개인키 정보(파일경로, 암호)를 지정해주는 것이 포인트겠네요. subscriptionid(구독 ID)는 애저 포탈의 대시보드 화면의 오른쪽 아래에서 보시면 확인 가능합니다.

 

b. Break를 걸고 리턴되는 값을 확인해보면 아래와 같이 체험중인 SQL Azure 서버 정보를 잘 받아오는 걸 확인했습니다.

image

 

5.  MS에서 제공하는 REST API 사용 추가 샘플을 사용하여 방화벽 설정을 추가할 수 있는 콘솔 어플리케이션을 만들고 테스트를 진행합니다.

a. Visual Studio에서 “콘솔 응용 프로그램”을 선택하고 프로젝트 이름은 “SQLAzureDatabaseManagement”를 입력하고 진행합니다.

image

 

b. Program.cs 파일을  페이지의 내용으로 변경합니다. 참조한 샘플은 “서버 수준 방화벽 만들기 (http://msdn.microsoft.com/ko-kr/library/gg715280.aspx )” 를 참조하시면 됩니다.

image

 

c. 해당 프로젝트를 빌드한 후 콘솔 창에서 빌드 완료 폴더로 이동하여, 총 7개의 인자를 입력하면 방화벽 설정을 추가할 수 있습니다.

  • CertifilePath : 개인인증서 파일 위치
  • CertfilePassword : 개인 인증서 암호
  • Subscription ID : 구독 아이디
  • ServerName : 애저 포탈 서버 이름
  • Rulename : 방화벽 이름
  • StartIP : 방화벽 허용 아이피 시작 값
  • EndIP :  아이피 종료 값

image

 

d. 정상적으로 실행되었다고 아래와 같이 나타납니다.

image

 

e. 실제 만들어졌는지 확인해봅니다. 먼저 위의 콘솔 실행하기 전의 방화벽 룰 정보를 master DB에서 쿼리한 정보입니다. 현재는 2개의 방화벽 정보만 리턴됩니다.

image

 

f. 콘솔 실행 후 방화벽 정보 쿼리 화면입니다. 방금 추가한 “Command_Add_Rule”이 잘 등록된 것을 확인할 수 있습니다.

image

 

이상으로 SQL Database에서 제공하는 REST API를 사용하기 위한 인증서 생성 및 등록과 콘솔 어플리케이션을 통해 지원되는 REST API의 사용 방법에 대해 간략히 살펴보았습니다.

 

방화벽 룰 설정은 위와 같은 REST 외에도 스토어 프로시저에서 제공하는 아래의 sp를 통해 추가 삭제도 가능합니다.

exec sp_set_firewall_rule N'Example setting 1','0.0.0.2','0.0.0.2'

exec sp_delete_firewall_rule N'Example setting 1'

 

아쉬운건 REST API의 경우 지원되는 기능들이 제한이 있어서 다 지원하지는 않은게 조금 아쉽긴 하네요.

지원되는 REST API 기능이나 관련 자료는 http://msdn.microsoft.com/ko-kr/library/gg715283.aspx  에 잘 나와 있습니다.

image

 

이번 후기는 여기까지입니다. REST API 사용에 대해서 간략히 살펴봤습니다.

 

블로그 이미지

별아해

카테고리

분류 전체보기 (12)
닷넷 (5)
안드로이드 (1)
데이터베이스 (0)
아이폰 (0)
IT일반 (0)