Loading...
MySQL 9.5 Reference Manual 9.5의 8.8 FIPS Support의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL은 지원되는 OpenSSL 라이브러리와 FIPS Object Module이 호스트 시스템에서 사용 가능할 때 FIPS 모드를 지원합니다.
서버 측 FIPS 모드는 서버가 수행하는 암호화 작업에 적용됩니다. 여기에는 서버 내에서 실행되는 복제(source/replica 및 Group Replication)와 X Plugin이 포함됩니다. FIPS 모드는 또한 클라이언트가 서버에 연결을 시도하는 경우에도 적용됩니다.
다음 절에서는 FIPS 모드와 이를 MySQL 내에서 활용하는 방법을 설명합니다:
Federal Information Processing Standards 140-2(FIPS 140-2)는 민감하거나 가치 있는 정보를 보호하는 데 사용되는 암호화 모듈에 대해 Federal(미국 정부) 기관이 요구할 수 있는 보안 표준을 설명합니다. 그러한 Federal 용도로 허용되려면 암호화 모듈은 FIPS 140-2 인증을 받아야 합니다. 민감한 데이터를 보호하려는 시스템이 적절한 FIPS 140-2 인증을 가지지 않은 경우, Federal 기관은 이를 구매할 수 없습니다.
OpenSSL과 같은 제품은 FIPS 모드로 사용할 수 있지만, OpenSSL 라이브러리 자체는 FIPS에 대해 검증되지 않았습니다. 대신, OpenSSL 라이브러리는 OpenSSL FIPS Object Module과 함께 사용되어 OpenSSL 기반 애플리케이션이 FIPS 모드에서 동작하도록 합니다.
FIPS 및 OpenSSL에서의 그 구현에 대한 일반적인 정보는 다음 참고 문서가 도움이 될 수 있습니다:
주의
FIPS 모드는 허용 가능한 암호화 알고리즘에 대한 제한이나 더 긴 키 길이에 대한 요구 사항과 같은, 암호화 작업에 대해 여러 조건을 부과합니다. OpenSSL의 경우, 정확한 FIPS 동작은 OpenSSL 버전에 따라 달라집니다.
MySQL이 FIPS 모드를 지원하려면, 다음 시스템 요구 사항이 충족되어야 합니다:
MySQL은 FIPS 사용에 대해 인증된 OpenSSL 버전으로 컴파일되어야 합니다. OpenSSL 1.0.2 및 OpenSSL 3.0은 인증되었지만, OpenSSL 1.1.1은 그렇지 않습니다. MySQL의 최신 버전용 바이너리 배포판은 일부 플랫폼에서 OpenSSL 3.0을 사용하여 컴파일되며, 이는 FIPS에 대해 인증되지 않았음을 의미합니다. 이는 시스템 및 MySQL 구성에 따라 다음과 같은 선택지를 가진다는 뜻입니다:
OpenSSL 3.0과 필요한 FIPS object module이 있는 시스템을 사용합니다. 이 경우, OpenSSL 3.0으로 컴파일된 바이너리 배포판을 사용하거나, OpenSSL 3.0을 사용하여 소스에서 MySQL을 컴파일하는 경우 MySQL에 대해 FIPS 모드를 활성화할 수 있습니다.
OpenSSL 3.0으로 업그레이드하는 일반적인 정보는
OpenSSL 3.0 Migration Guide를 참조하십시오.
OpenSSL 1.1.1 이상이 있는 시스템을 사용합니다. 이 경우, 바이너리 패키지를 사용하여 MySQL을 설치할 수 있으며, 이미 지원되는 다른 TLS 프로토콜에 더해 TLS v1.3 프로토콜과 암호 모음을 사용할 수 있습니다. 그러나 MySQL에 대해 FIPS 모드를 활성화할 수는 없습니다.
OpenSSL 1.0.2와 필요한 FIPS Object Module이 있는 시스템을 사용합니다. 이 경우, OpenSSL 1.0.2로 컴파일된 바이너리 배포판을 사용하거나 OpenSSL 1.0.2를 사용하여 소스에서 MySQL을 컴파일하는 경우 MySQL에 대해 FIPS 모드를 활성화할 수 있습니다. 이 경우, OpenSSL 1.1.1 또는 3.0을 필요로 하는 TLS v1.3 프로토콜이나 암호 모음은 사용할 수 없습니다. 추가로, OpenSSL 1.0.2는 2019년에 지원 종료(end of life) 상태에 도달했으며, OpenSSL 1.1.1을 내장한 모든 운영 플랫폼은 2024년에 지원 종료에 도달한다는 점을 인지해야 합니다.
런타임 시, OpenSSL 라이브러리와 OpenSSL FIPS Object Module은 공유(동적 링크) 오브젝트로 사용 가능해야 합니다.
MySQL이 FIPS 모드가 활성화된 시스템에서 실행 중인지 확인하려면, 다음과 같은 SQL 문인
SHOW VARIABLES LIKE '%fips%' 또는
SELECT @@ssl_fips_mode를 사용하여 ssl_fips_mode 서버 시스템 변수의 값을 확인하십시오. 이 변수의 값이 1(ON) 또는 2(STRICT)이면 OpenSSL에 대해 FIPS 모드가 활성화된 것입니다. 값이 0(OFF)이면 FIPS 모드는 사용 불가능합니다.
주의
일반적으로 STRICT는 ON보다 더 많은 제한을 가하지만, MySQL 자체는 OpenSSL에 FIPS 모드 값을 지정하는 것 외에는 FIPS 전용 코드(FIPS-specific code)를 가지지 않습니다. ON 또는 STRICT에 대한 FIPS 모드의 정확한 동작은 OpenSSL 버전에 따라 달라집니다. 자세한 내용은 fips_module manpage( FIPS Overview 참조)를 참고하십시오.
서버 측 FIPS 모드는 서버가 수행하는 암호화 작업에 적용되며, 여기에는 서버 내에서 실행되는 MySQL Replication(Group Replication 포함)과 X Plugin이 포함됩니다.
FIPS 모드는 또한 클라이언트가 서버에 연결을 시도하는 경우에도 적용됩니다. 클라이언트 측 또는 서버 측에서 활성화되면, 지원되는 암호화 암호 중 선택될 수 있는 것들을 제한합니다. 그러나 FIPS 모드를 활성화한다고 해서 반드시 암호화된 연결을 사용해야 한다거나 사용자 자격 증명이 반드시 암호화되어야 하는 것은 아닙니다. 예를 들어, FIPS 모드가 활성화되면 더 강력한 암호화 알고리즘이 요구됩니다. 특히, MD5는 제한되므로, RC4-MD5와 같은 암호화 암호를 사용하여 암호화된 연결을 설정하려고 시도하면 동작하지 않습니다. 하지만 FIPS 모드에는 암호화되지 않은 연결의 설정을 막는 어떤 요소도 없습니다. (이를 위해, 특정 사용자 계정에 대해 CREATE USER 또는 ALTER USER의 REQUIRE 절을 사용하거나, 모든 계정에 영향을 주도록 require_secure_transport 시스템 변수를 설정할 수 있습니다.)
FIPS 모드가 필요하다면, 이를 포함하는 운영 플랫폼을 사용하는 것이 권장되며, 만약 그렇다면 이를 사용할 수 있고(또한 사용해야) 합니다. 사용 중인 플랫폼에 FIPS가 포함되어 있지 않다면 다음 두 가지 선택지가 있습니다:
FIPS OpenSSL 지원을 가진 플랫폼으로 마이그레이션합니다.
fips_module manpage( FIPS Overview 참조)의 지침을 사용하여 소스에서 OpenSSL 라이브러리와 FIPS object module을 빌드합니다.
참고
OpenSSL FIPS Object Module을 사용할 수 없는 경우, ssl_fips_mode 및 --ssl-fips-mode에 대해 허용되는 유일한 값은 OFF입니다. FIPS 모드를 다른 값으로 설정하려는 시도는 오류를 발생시킵니다.
FIPS 모드가 필요하다면, 이를 포함하는 운영 플랫폼을 사용하는 것이 권장되며, 만약 그렇다면 이를 사용할 수 있고(또한 사용해야) 합니다. 사용 중인 플랫폼에 FIPS가 포함되어 있지 않다면 다음 두 가지 선택지가 있습니다:
FIPS OpenSSL 지원을 가진 플랫폼으로 마이그레이션합니다.
fips_module manpage( FIPS Overview 참조)의 지침을 사용하여 소스에서 OpenSSL 라이브러리와 FIPS object module을 빌드합니다.
8.7.6 Troubleshooting SELinux
9 Backup and Recovery