21.2. 사용자 인증 작업 흐름

../../../_images/auth-user-usage.png

그림 21.19 일반적인 사용자 작업 흐름

21.2.1. HTTP(S) 인증

가장 흔한 리소스 연결 가운데 하나가 바로, 예를 들어 웹 매핑 서비스 같은 HTTP(S)를 통한 연결로, 인증 방법 플러그인은 자주 이런 연결 유형을 위해 작업합니다. 인증 방법 플러그인은 HTTP 요청 객체에 접근해서 해당 요청은 물론 그 헤더도 조작할 수 있습니다. 따라서 수많은 형태의 인터넷 기반 인증을 할 수 있습니다. 표준적인 사용자명/비밀번호 인증 방법을 사용해서 HTTP(S)를 통해 연결하는 경우, 연결 시 HTTP BASIC 인증을 시도할 것입니다.

../../../_images/auth-http-basic-wms.png

그림 21.20 HTTP BASIC에 대한 WMS 연결 환경 설정하기

21.2.2. 데이터베이스 인증

인증 환경 설정을 사용하지 않는다면, 데이터베이스 리소스에 대한 연결은 일반적으로 사용자 이름과 (선택적으로) 암호를 노출하게 되는 key=value 쌍으로 저장됩니다. 인증 시스템을 환경 설정할 때, key=valueauthfg=81t21b9 처럼 인증 정보의 추상적인 표현이 될 것입니다.

../../../_images/auth-db-ssl-pki.png

그림 21.21 PostgreSQL SSL-PKI 연결 환경 설정하기

21.2.3. PKI 인증

인증 시스템 내에서 PKI 항목을 환경 설정하는 경우, 데이터베이스로 항목을 가져오거나 또는 사용자 파일 시스템에 저장된 항목 파일을 참조하는 옵션을 선택할 수 있습니다. 해당 항목이 자주 변경되거나, 또는 시스템 관리자가 해당 항목을 교체할 예정인 경우 후자가 유용할 수도 있습니다. 두 옵션 모두, 데이터베이스 안에 있는 개인 키(private key)에 접근하는 데 필요한 암호(passphrase)를 저장해야 할 것입니다.

../../../_images/auth-pki-config.png

그림 21.22 PKI 환경 설정 작업 흐름

인증서 관리자 안에 있는 개별 편집기에서 모든 PKI 항목들을 관리할 수 있습니다. 인증서 관리자는 Settings ► Options 메뉴를 클릭하면 열리는 QGIS Options 대화창의 Authentication 탭에 있는 Manage Certificates 버튼을 클릭하면 열 수 있습니다.

../../../_images/auth-open-Certificate-manager.png

그림 21.23 인증서 관리자 열기

Certificate Manager식별 정보(Identities), 서버(Servers) 그리고 권한(Authorities) 에 대한 편집기가 있습니다. 각각 각자의 탭이 있으며, 위의 작업 흐름도에서 발생하는 순서대로 아래에서 설명하고 있습니다. 탭 순서는 사용자가 작업 흐름에 익숙해지면 자주 사용하는 편집기 기준입니다.

참고

모든 인증 시스템 편집 작업은 인증 데이터베이스에 바로 작성되기 때문에, 변경 사항을 저장하기 위해 Options 대화창에서 OK 버튼을 클릭해야 할 필요는 없습니다. Options 대화창에 있는 다른 설정들과 다른 점이죠.

21.2.3.1. 권한

Settings ► Options 대화창의 Authentication 탭에서 Certificate Manager 대화창을 열어 Authorities 탭을 선택하면 사용 가능한 인증서 권한(Certificate Authorities; CAs)을 관리할 수 있습니다.

앞의 작업 흐름도에서 볼 수 있듯이, 첫 단계로 인증서 권한의 참조 파일을 가져와야 합니다. 이 단계를 건너뛸 수도 있는데, 특히 사용자의 PKI 신뢰 연결고리(trust chain)가 사용자 OS에 이미 설치돼 있는 – 예를 들어 상용 인증서 판매자의 인증서 같은 – 루트 인증서 권한에서 비롯되는 경우 이 단계가 필요없을 수도 있습니다. 사용자가 인증하는 루트 인증서 권한이 OS가 신뢰하는 루트 인증서 권한이 아니라면 해당 인증서 권한 참조 파일을 가져오거나 파일 경로를 참조시켜야 합니다. (확실하지 않은 경우 시스템 관리자에게 연락하십시오.)

../../../_images/auth-editor-authorities.png

그림 21.24 권한 편집기

기본적으로, 사용자 OS의 루트 인증서 권한을 사용할 수 있습니다. 하지만 OS 인증서 권한의 신뢰 설정은 상속되지 않습니다. 사용자가 인증서 신뢰 정책의 설정을 검토해야 합니다. 특히 사용자 OS의 루트 인증서 권한의 정책이 수정됐을 경우엔 말이죠. 사용 기한이 지난 모든 인증서는, 사용자가 특별히 그 신뢰 정책을 무시하지 않는 한, 신뢰할 수 없다고 설정되어 보안된 서버 연결에 사용되지 않을 것입니다. 어느 인증서에 대해서든 QGIS가 찾을 수 있는 신뢰 연결고리를 살펴보려면, 해당 인증서를 선택한 다음 metadata Show information for certificate 아이콘을 클릭하십시오.

../../../_images/auth-authority-imported_cert-info-chain.png

그림 21.25 인증서 정보 대화창

Trust policy selectString 옵션을 사용하면 신뢰 연결고리 내에서 선택한 어떤 인증서든 신뢰 정책을 편집할 수 있습니다. 선택한 인증서에 대한 신뢰 정책을 어떻게 변경하든 간에, 선택한 인증서 별로 fileSave Save certificate trust policy change to database 아이콘을 클릭하지 않는 한 데이터베이스에 변경 사항을 저장하지 않을 것입니다. 대화창을 닫는다고 해도 신뢰 정책의 변경 사항은 적용되지 않을 것입니다.

../../../_images/auth-authority-edit-trust_save-not-close.png

그림 21.26 신뢰 정책의 변경 사항을 저장하기

transformSettings Options 아이콘을 클릭하면 보안 연결에 사용할 만큼 신뢰할 수 있다고 필터링된 인증서 권한을 – 중간 인증서와 루트 인증서 모두 – 검토하거나, 또는 신뢰 정책의 기본값을 변경할 수도 있습니다.

경고

신뢰 정책의 기본값을 변경하면 보안 연결에 문제가 발생할 수도 있습니다.

../../../_images/auth-editor-authorities_utilities-menu.png

그림 21.27 권한 옵션 액션

인증서 권한을 개별적으로 가져오거나, 또는 여러 인증서 권한을 담고 있는 파일을 가리키는 파일 경로를 저장할 수 있습니다. 여러 CA 연결고리 인증서를 담는 표준 파일인 PEM 포맷은 파일의 제일 끝에 루트 인증서를 놓고, 그 위로 파일의 시작점을 향해 순서대로 서명된 자식 인증서들을 모두 저장합니다.

CA 인증서 가져오기 대화창은 이 파일 안에 있는 모든 CA 인증서를 순서에 상관없이 찾을 것입니다. 또 유효하지 않다고 판단되는 인증서를 (사용자가 그 신뢰 정책을 무시하려는 경우) 가져올 수 있는 옵션도 제공합니다. CA 인증서를 가져올 때 신뢰 정책을 무시할 수도 있고, 또는 나중에 권한 편집기에서 무시하도록 설정할 수도 있습니다.

../../../_images/auth-authority-import.png

그림 21.28 인증서 가져오기 대화창

참고

|radioButtonOn| PEM text 옵션의 텍스트 란에 인증서 정보를 붙여넣는 경우, 암호화된 인증서는 지원하지 않는다는 사실을 기억하십시오.

21.2.3.2. 신원

Settings ► Options 대화창의 Authentication 탭에서 Certificate Manager 대화창을 열어 Identities 탭을 선택하면 사용 가능한 클라이언트 신원 묶음을 관리할 수 있습니다. 신원이란 PKI 적용 서비스에 대해 사용자를 인증하는 것으로 보통 클라이언트 인증서와 개인 키로 이루어져 있는데, 두 개가 각각 개별 파일로 돼 있거나 또는 단일한 “묶음(bundled)” 파일로 결합돼 있습니다. 이 묶음 또는 개인 키는 암호로 보호돼 있는 경우가 많습니다.

인증서 권한(CAs)을 가져오고 나면 인증 데이터베이스로 신원 묶음을 가져올 수도 있고 그러지 않을 수도 있습니다. 신원을 저장하고 싶지 않은 경우, 개별 인증 환경 설정 안에 신원 항목 파일 경로를 참조시킬 수 있습니다.

../../../_images/auth-editor-identities.png

그림 21.29 신원 편집기

신원 묶음을 가져올 때, 신원 묶음은 암호로 보호돼 있을 수도 있고 아닐 수도 있습니다. 신원 묶음은 신뢰 연결고리를 형성하는 인증서 권한을 담고 있을 수도 있지만, 신뢰 연결고리 인증서를 가져오지는 않을 것입니다. 신뢰 연결고리 인증서는 Authorities 탭을 통해 개별적으로 추가할 수 있습니다.

신원 묶음의 인증서를 가져올 때, 개인 키는 데이터베이스에 QGIS 마스터 비밀번호를 이용해서 암호화되어 저장될 것입니다. 이후 데이터베이스에서 저장된 신원 묶음을 이용할 경우 마스터 비밀번호만 입력하면 됩니다.

PEM/DER(.pem/.der) 및 PKCS#12(.p12/.pfx) 항목으로 구성된 개인 신원 묶음을 지원합니다. 개인 키 또는 신원 묶음이 암호로 보호돼 있는 경우, 가져오기 전에 항목을 검증하기 위해 비밀번호를 입력해야 합니다. 마찬가지로, 신원 묶음에 있는 클라이언트 인증서가 유효하지 않을 경우 (예를 들어 유효 기간 전 또는 후인 경우) 신원 묶음을 가져올 수 없습니다.

../../../_images/auth-identity-import_paths.png

그림 21.30 PEM/DER 신원 묶음 가져오기

../../../_images/auth-identity-import_bundle-valid.png

그림 21.31 PKCS#12 신원 묶음 가져오기

21.2.4. 잘못된 레이어 처리

때때로, 프로젝트 파일에 저장된 인증 환경 설정 ID가 더 이상 유효하지 않은 경우가 있습니다. 현재 인증 데이터베이스가 프로젝트가 마지막으로 저장됐을 때와 달라졌을 수도 있고, 또는 인증 정보가 일치하지 않을 수도 있기 때문입니다. 이런 경우 QGIS 구동 시 Handle bad layers 대화창이 열릴 것입니다.

../../../_images/auth-handle-bad-layers.png

그림 21.32 인증을 통해 잘못된 레이어 처리하기

데이터소스가 연관된 인증 환경 설정 ID를 보유하고 있을 경우, 사용자가 편집할 수 있습니다. 이 경우 텍스트 편집기에서 프로젝트 파일을 열어 문자열을 편집하는 것과 거의 동일한 방식으로 자동적으로 데이터소스 문자열이 편집됩니다.

../../../_images/auth-handle-bad-layers-edit.png

그림 21.33 잘못된 레이어의 인증 환경 설정 ID 편집하기

21.2.5. 인증 환경 설정 ID 변경

때때로, 리소스 접근에 관련된 인증 환경 설정 ID를 변경해야 하는 경우가 있습니다. ID 변경이 유용한 다음과 같은 경우들이 있습니다:

  • 리소스 인증 환경 설정 ID가 더 이상 유효하지 않습니다: 이는 이미 리소스와 연관돼 있는 ID에 새로운 환경 설정을 할당 하기 위해 인증 데이터베이스를 전환했을 때 발생할 수 있습니다.

  • 공유한 프로젝트 파일: 사용자 사이에, 예를 들어 파일 공유 서버를 통해 프로젝트를 공유하려는 경우, 리소스와 연관된 (a-z 그리고/또는 0-9 를 포함할 수 있는) 문자 7개 길이의 문자열을 사전에 정의할 수 있습니다. 그런 다음 개별 사용자는 리소스의 자격 증명과 관련된 인증 환경 설정 ID를 변경합니다. 프로젝트가 공개됐을 때, ID는 인증 데이터베이스에서 찾을 수 있지만 자격 증명은 사용자마다 다릅니다.

../../../_images/auth-change-config-id.png

그림 21.34 레이어의 인증 환경 설정 ID 변경하기 (고정 해제된 노란색 텍스트 란)

경고

인증 환경 설정 ID를 변경하는 것은 고급 작업으로 간주되며, 변경해야 하는 이유를 완전히 이해하고 있는 경우에만 변경해야 합니다. ID를 편집하기 전에 클릭해야 하는 |locked| 아이콘이 ID 텍스트 란 옆에 있는 이유입니다.

21.2.6. QGIS 서버 지원

QGIS 서버에서 인증 환경 설정이 적용된 레이어를 기본 맵으로 사용하는 프로젝트 파일을 사용하는 경우, QGIS가 리소스를 불러오기 위해 필요한 다음과 같은 추가 설정 단계가 있습니다:

  • 인증 데이터베이스를 사용할 수 있도록 설정해야 합니다.

  • 인증 데이터베이스의 마스터 비밀번호를 사용할 수 있도록 설정해야 합니다.

인증 시스템을 처음 사용하는 경우, 서버가 활성화된 사용자 프로파일 에 또는 QGIS_AUTH_DB_DIR_PATH 환경 변수가 정의한 디렉터리에 qgis-auth.db 파일을 생성하거나 사용할 것입니다. 서버 사용자에게 디렉터리가 없을 수도 있는데, 이런 경우 환경 변수를 사용해서 서버 사용자가 읽기/쓰기 권한을 가지고 있으며 웹에서 접근할 수 있는 디렉터리 안에 위치하지 않은 디렉터리를 정의하십시오.

서버에 마스터 비밀번호를 넘겨주려면, 서버 프로세스 사용자가 읽을 수 있는 파일 시스템 상에 있으며 QGIS_AUTH_PASSWORD_FILE 환경 변수를 통해 정의한 경로에 있는 파일의 첫 행에 마스터 비밀번호를 작성하십시오. 서버 프로세스 사용자만 읽을 수 있도록 파일 권한을 제약했는지, 그리고 웹에서 접근할 수 있는 디렉터리에 파일을 저장하지는 않았는지 확인하십시오.

참고

접근 후 바로 서버 환경에서 QGIS_AUTH_PASSWORD_FILE 환경 변수를 제거할 것입니다.

21.2.7. SSL 서버 예외

../../../_images/auth-ssl-config.png

그림 21.35 SSL 서버 예외

Settings ► Options 대화창의 Authentication 탭에서 Certificate Manager 대화창을 열어 Servers 탭을 선택하면 SSL 서버 환경 설정 및 예외를 관리할 수 있습니다.

SSL 서버 연결 시 때때로 SSL 주고받기(handshake) 또는 서버의 인증서에서 오류가 발생하는 경우가 있습니다. 이런 오류를 무시할 수도 있고 또는 이런 오류를 SSL 서버의 예외로 환경 설정할 수도 있습니다. 웹 브라우저가 SSL 오류를 무시할 수 있도록 해주는 방법과 비슷하지만, 좀 더 세밀하게 제어할 수 있습니다.

경고

서버와 클라이언트 간의 SSL 전체 설정을 완전히 이해하고 있지 않다면 SSL 서버 환경 설정을 생성해서는 안 됩니다. 그 대신 서버 관리자에서 문제점을 보고하십시오.

참고

일부 PKI 설정은 클라이언트 신원을 검증하기 위해 SSL 서버 인증서를 검증하는 데 사용하는 신뢰 연결고리와는 완전히 다른 인증서 권한 연결고리를 사용합니다. 이런 상황이라면, 연결 서버에 대해 어떤 환경 설정을 생성하더라도 사용자 클라이언트 신원 관련 문제점을 반드시 해결할 수 있는 것은 아닙니다. 사용자 클라이언트 신원 발행자 또는 서버 관리자만이 해당 문제점을 해결할 수 있습니다.

Certificate Manager 대화창에 있는 signPlus 아이콘을 클릭하면 SSL 서버 환경 설정을 사전 설정할 수 있습니다. 아니면, 연결 중 SSL 오류가 발생하는 경우 환경 설정을 추가하면 (일시적으로 오류를 무시하거나 또는 데이터베이스에 환경 설정을 저장한 다음 무시할 수 있는) 다음 SSL 오류 대화창이 열립니다:

../../../_images/auth-server-exception.png

그림 21.36 환경 설정을 직접 추가하기

../../../_images/auth-server-error-add-exception.png

그림 21.37 SSL 오류 발생 도중 환경 설정을 추가하기

데이터베이스에 SSL 환경 설정을 저장하고 나면, 해당 설정을 편집하거나 삭제할 수 있습니다.

../../../_images/auth-editor-servers.png

그림 21.38 기존 SSL 환경 설정

../../../_images/auth-server-edit.png

그림 21.39 기존 SSL 환경 설정 편집하기

SSL 환경 설정을 사전 설정하고자 하는데 사용자의 서버 연결에 대해 가져오기 대화창이 작동하지 않는 경우, 다음 코드를 실행하면 파이썬 콘솔 을 통해 연결을 직접 촉발할 수 있습니다. (https://bugreports.qt-project.org 문자열을 사용자 서버의 URL로 교체하십시오):

from qgis.PyQt.QtNetwork import QNetworkRequest
from qgis.PyQt.QtCore import QUrl
from qgis.core import QgsNetworkAccessManager

req = QNetworkRequest(QUrl('https://bugreports.qt-project.org'))
reply = QgsNetworkAccessManager.instance().get(req)

이렇게 하면 오류 발생 시 SSL 오류 대화창이 열립니다. 이 대화창에서 데이터베이스에 환경 설정을 저장하도록 선택할 수 있습니다.