22.3. 보안 고려 사항
마스터 비밀번호를 입력하고 나면, 파이어폭스 작동 방식과 비슷하게 API가 열려 인증 데이터베이스에 있는 인증 환경 설정에 접근할 수 있습니다. 하지만 맨 처음 실행하는 경우, PyQGIS 접근을 막는 어떤 방화벽도 정의되지 않은 상태입니다. 인증 정보에 접근할 수 있는 악성 PyQGIS 플러그인 또는 독립형 응용 프로그램을 다운로드해서 설치한 경우 문제가 발생할 수도 있습니다.
맨 처음 피처를 배포할 때의 이런 문제점에 대한 빠른 해결책은 그냥 대부분의 인증 시스템 용 PyQGIS 바인딩을 포함시키지 않는 것입니다.
강력하지는 않지만 단순한 또다른 해결책은 Authentication 탭에 파이썬이 인증 시스템에 접근할 수 있는지 여부를 결정하는 (기본값이 ‘never’ 인) 콤보박스를 다음과 같이 추가하는 것입니다:
대화창의"Allow Python access to authentication system"
Choices: [ confirm once per session | always confirm | always allow | never]
이런 옵션의 설정은 파이썬이 접근할 수 없는, 예를 들어 인증 데이터베이스 같은 위치에 저장해야 하고, 또 마스터 비밀번호로 암호화해야 할 것입니다.
또다른 옵션은 사용자가 특별히 인증 시스템에 접근을 허용한 플러그인을 추적하는 것일 수도 있습니다.
어떤 플러그인이 실제로 호출했는지 알아내는 것이 힘들 수도 있지만 말이죠.
Sandboxing plugins, possibly in their own virtual environments, would reduce ‘cross-plugin’ hacking of authentication configs from another plugin that is authorized. This might mean limiting cross-plugin communication as well, but maybe only between third-party plugins.
검증된 플러그인 개발자에게 코드 서명(code-signing) 인증서를 발급하는 것도 훌륭한 해결책 가운데 하나입니다. 플러그인을 불러올 때 플러그인의 인증서를 검증하면 되니까요. 필요한 경우 기존 인증서 관리자 대화창을 통해 플러그인과 관련된 인증서를 신뢰할 수 없다는 정책을 직접 설정할 수도 있습니다.
아니면, 파이썬이 민감한 인증 시스템 데이터에 아예 접근하지 못 하도록 할 수도 있습니다.
주 응용 프로그램에서 불러온 마스터 비밀번호와 인증 환경을 유지한 채로 오직 QGIS 핵심 위젯을 사용해서만, 또는 통합된 인증 시스템을 복제함으로써만 플러그인이 인증 환경 설정을 보유한 리소스와 작업할 수 있도록 허용할 수도 있습니다.
C++ 플러그인에도 동일한 보안 고려 사항이 적용됩니다. 다만 파이썬과는 달리 간단하게 제거할 수 있는 함수 바인딩이 없기 때문에, 접근을 제한하는 작업이 더 힘들어질 것입니다.
22.3.1. 제약 사항
OpenSSL 적용과 관련한, 이해하기 힘든 사용권 계약 및 내보내기 문제점이 있습니다. Qt가 SSL 인증서와 작업할 수 있게 하려면, Qt가 OpenSSL 라이브러리에 접근할 수 있어야 합니다. Qt를 어떻게 컴파일했느냐에 따라 다르지만, 기본값은 (내보내기 제한을 피하기 위해) 실행 시간(run-time)에 OpenSSL 라이브러리에 동적으로 링크를 거는 것입니다.
QGIS 인증서 권한(QCA)도 실행 시간에 qca-ossl
(QCA-OpenSSL) 플러그인을 불러오기 때문에 QCA에 링크를 걸어도 제약 사항이 발생하지 않는다는 비슷한 전략을 따릅니다. 패키지 생산자가 관련 플러그인을 포함시키는 경우, QGIS가 어떤 OpenSSL 링크 연결 관련 제약 사항에도 걸리지 않도록 보장해야 하는 쪽은 패키지 생산자입니다…일 겁니다. 저도 확실히 몰라요. 전 변호사가 아니니까요.
실행 시간에 qca-ossl
플러그인을 찾을 수 없는 경우, 인증 시스템은 스스로를 안전하게 비활성화합니다.