• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 1. 일반적인 보안 문제
    2. MySQL 권한 시스템
    3. MySQL 사용자 계정 관리
    1. 사용자 이름과 암호
    2. 사용자 계정 추가
    3. 사용자 계정 삭제
    4. 계정 자원 제한 설정
    5. 계정 암호 지정
    6. 암호 만료 및 샌드 박스 모드
    7. 플러그 인증
    8. MySQL에서 사용 가능한 인증 플러그인
    9. 프록시 사용자
    10. 보안 연결을 위해 SSL 사용
    11. SSH를 사용하여 Windows에서 MySQL에 대한 원격 연결
    12. MySQL Enterprise Audit 로그 플러그인
    13. SQL 기반의 MySQL 계정 활동 감사
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

6.3.7 플러그 인증

클라이언트가 MySQL 서버에 접속하면 서버는 클라이언트와 클라이언트 호스트에서 제공된 사용자 이름을 사용하여 mysql.user 테이블에서 적절한 계정 행을 선택합니다. 그 후, 서버는 인증 플러그인에서 클라이언트에 적용되는 계정 라인으로 결정하여 클라이언트를 인증합니다.

  • 계정 행에 플러그인이 지정된 경우 서버는 그것을 호출하여 사용자를 인증합니다. 서버가 플러그인을 찾을 수없는 경우 오류가 발생합니다.

  • 계정 행에 플러그인 이름이 지정되어 있지 않은 경우, Password 컬럼의 암호 해시 값을 기본 해시 방식과 4.1 이전의 오래된 해시 방식 중 어느 쪽이 사용되고 있는지에 따라 서버는 mysql_native_password 과 mysql_old_password 중 하나의 플러그인을 사용하여 계정을 인증합니다. 클라이언트는 계정 행의 Password 컬럼의 암호와 일치해야합니다.

사용자가 연결을 허용하는지 여부를 나타내는 표시등이 플러그인에서 서버에 반환됩니다.

플러그 인증을 사용하면 다음과 같은 두 가지 중요한 기능이 활성화됩니다.

  • 외부 인증 : 플러그 인증을 사용하면 mysql.user 테이블에 저장되어있는 암호 기반 네이티브 이외의 인증 방식에 적합한 인증서를 사용하여 클라이언트가 MySQL 서버에 연결할 수 있습니다. 예를 들어, PAM, Windows의 로그인 ID, LDAP, Kerberos와 같은 외부 인증 방식을 사용하는 플러그인을 만들 수 있습니다.

  • 프록시 사용자 : 사용자가 연결을 허용하는 경우 연결된 사용자가 다른 사용자의 프록시임을 나타 내기 위해 인증 플러그인은 연결된 사용자의 이름과 다른 사용자 이름을 서버에 반환 수 있습니다. 연결이 존속하는 동안은 액세스 제어를 위해 프록시 사용자는 다른 사용자의 권한을 가지고있는 것으로 처리됩니다. 사실, 사용자는 다른 사용자를 가장합니다. 자세한 내용은 섹션 6.3.9 "프록시 사용자" 를 참조하십시오.

MySQL은 여러 인증 플러그 인이 사용 가능합니다.

  • 계정 행의 Password 컬럼과 비교하여 암호를 일치시키는 기본 인증을 수행하는 플러그인. mysql_native_password 플러그인에는 기본 암호 해시 방식에 따라 인증이 구현되어 있습니다. mysql_old_password 플러그인은 이전 (4.1 이전) 패스워드 해시 방식 (현재는 비추천입니다)에 따라 기본 인증이 구현되어 있습니다. 섹션 6.3.8.1 "기본 인증 플러그인" 및 섹션 6.3.8.2 "오래된 원시 인증 플러그인" 을 참조하십시오. 서버 시작시 --default-authentication-plugin 옵션이 설정되어있는 경우를 제외하고 mysql_native_password 을 사용한 기본 인증이 새 계정의 기본입니다.

  • SHA-256 암호 해시를 사용하여 인증을 수행하는 플러그인. 이 플러그인은 계정 행 authentication_string 컬럼과 비교하여 암호를 일치시킵니다. 이것은 기본 인증으로 실현할 수있는보다 강력한 암호화입니다. 섹션 6.3.8.4 "SHA-256 인증 플러그인" 을 참조하십시오.

  • PAM (Pluggable Authentication Module)과 비교하여 외부 인증을 수행하는 플러그인. 이것을 사용하면 MySQL 서버가 PAM을 사용하여 MySQL 사용자를 인증 할 수 있습니다. 이 플러그인은 프록시 사용자도 지원되고 있습니다. 섹션 6.3.8.5 "PAM 인증 플러그인" 을 참조하십시오.

  • Windows에서 외부 인증을 수행하는 플러그인. 이것을 사용하면 MySQL 서버가 기본 Windows 서비스를 사용하여 클라이언트 연결을 인증 할 수 있습니다. Windows에 로그인 한 사용자는 암호를 추가로 지정하지 않고 자신의 환경 정보에 따라 MySQL 클라이언트 프로그램에서 서버에 연결할 수 있습니다. 이 플러그인은 프록시 사용자도 지원되고 있습니다. 섹션 6.3.8.6 "Windows 기본 인증 플러그인" 을 참조하십시오.

  • 해시 또는 암호화하지 않고 서버에 암호를 보내는 클라이언트 플러그인. 이 플러그인은 클라이언트 사용자가 제공 한 것과 똑같은 비밀번호에 액세스해야하는 서버 측의 플러그인으로 사용할 수 있습니다. 섹션 6.3.8.7 "클라이언트 측의 일반 텍스트 인증 플러그인" 을 참조하십시오.

  • Unix 소켓 파일을 사용하여 로컬 호스트에서 연결하는 클라이언트를 인증하는 플러그인. 섹션 6.3.8.8 "소켓 피어 인증서 인증 플러그인" 을 참조하십시오.

  • MySQL의 기본 인증을 사용하여 인증하는 테스트 플러그인. 이 플러그인은 테스트 및 개발을 위해 인증 플러그인을 작성하는 방법을 예제로 사용됩니다. 섹션 6.3.8.9 "테스트 인증 플러그인" 을 참조하십시오.

참고

플러그 인증 사용에 대한 현재의 제약 (어떤 커넥터가 어떤 플러그인을 지원하고 있는지 등) 내용은 섹션 D.9 "플러그 인증 제한 사항" 을 참조하십시오.

타사 커넥터 개발자는 커넥터 플러그 인증 기능을 활용할 수있는 범위와 더 준수하기 위해 수행 할 단계를 확인하기 위해 해당 섹션을 읽어 봐야한다.

자체 인증 플러그인을 작성하는 것에 관심이 있다면, 섹션 24.2.4.9 "인증 플러그인 만들기" 를 참조하십시오.

인증 플러그인 사용 방법

이 섹션에서는 인증 플러그인을 설치 및 사용하기위한 일반적인 단계를 보여줍니다.

일반적으로 플러그 인증은 서버 측과 클라이언트 측에서 지원하는 플러그인이 사용됩니다. 따라서 다음과 같은 특정 인증 방식을 사용합니다.

  • 서버 호스트는 필요에 따라 적절한 서버 플러그인을 포함한 라이브러리를 설치합니다. 이렇게하면 서버는이를 사용하여 클라이언트 연결을 인증 할 수 있습니다. 마찬가지로 각 클라이언트 호스트에서 클라이언트 프로그램에서 사용되는 적절한 클라​​이언트 플러그인을 포함한 라이브러리를 설치합니다.

  • 인증 용 플러그인의 사용을 지정하는 MySQL 계정을 만듭니다.

  • 클라이언트가 연결되면 서버 플러그인에서 클라이언트 프로그램에 인증에 사용되는 클라이언트 플러그인이 지시됩니다.

여기에 표시된 지시는 MySQL 배포판에 포함 된 샘플 인증 플러그인을 사용하고 있습니다 ( 섹션 6.3.8.9 "테스트 인증 플러그인" 을 참조하십시오). 이 단계는 다른 인증 플러그인과 비슷합니다. 적절한 플러그인 및 파일 이름으로 대체하십시오.

샘플 인증 플러그인은 다음과 같은 특징이 있습니다.

  • 서버 측의 플러그인 이름은 test_plugin_server 입니다.

  • 클라이언트 플러그인 이름은 auth_test_plugin 입니다.

  • 어떤 플러그인도 플러그인 디렉토리 ( plugin_dir 시스템 변수로 지정된 디렉토리)의 auth_test_plugin.so 라는 공유 라이브러리 객체 파일에 배치되어 있습니다. 파일 이름 접미사는 시스템에 따라 다를 수 있습니다.

다음과 같이 샘플 인증 플러그인을 설치하고 사용합니다.

  1. 서버 호스트 및 클라이언트 호스트에 플러그인 라이브러리가 설치되어 있는지 확인합니다.

  2. 서버를 시작하거나 실행할 때 서버 측의 테스트 플러그인을 설치합니다.

    • 시작시 플러그인을 설치하려면 --plugin-load 옵션을 사용합니다. 이 플러그인로드 방식은 서버를 시작할 때마다 옵션을 지정해야합니다. 예를 들어, my.cnf 옵션 파일에서 다음 줄을 사용합니다.

       [mysqld]
       plugin-load = test_plugin_server = auth_test_plugin.so
      
    • 실행시 플러그인을 설치하려면 INSTALL PLUGIN 명령문을 사용합니다.

       mysql> INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';
      

      그러면 플러그인이 영구적으로 설치되므로 한 번만 실행해야합니다.

  3. 플러그인이 설치되어 있는지 확인합니다. 예를 들어, SHOW PLUGINS 을 사용합니다.

     mysql> SHOW PLUGINS\G
     ...
     *************************** 21. row ******************** *******
        Name : test_plugin_server
      Status : ACTIVE
        Type : AUTHENTICATION
     Library : auth_test_plugin.so
     License : GPL
    

    플러그인을 체크하기위한 다른 방법은 섹션 5.1.8.2 "서버 플러그인 정보 얻기" 를 참조하십시오.

  4. 특정 서버 플러그인을 사용하여 MySQL 사용자를 인증해야 함을 지정하려면 사용자를 만들려면 CREATE USER 문 IDENTIFIED WITH 절에 플러그인의 이름을 지정합니다.

     CREATE USER 'testuser'@ 'localhost'IDENTIFIED WITH test_plugin_server;
    
  5. 클라이언트 프로그램을 사용하여 서버에 연결합니다. 테스트 플러그인은 기본 MySQL 인증과 같은 방법으로 인증을 실행합니다. 따라서 서버에 연결하는 데 일반적으로 사용되는 일반 --user 및 --password 옵션을 지정합니다. 예 :

     shell> mysql --user= your_name --password= your_pass
    

    testuser 에 의한 연결의 경우, 서버는 test_plugin_server 라는 서버 측 플러그인을 사용하여 계정을 인증 할 필요가 있다는 것을 인식하고 클라이언트 플러그인 (이 경우 auth_test_plugin )을 사용할 필요가있다 클라이언트 프로그램과 통신합니다.

    계정이 서버 프로그램과 클라이언트 프로그램 모두 기본 인 인증 방식을 사용하는 경우 서버 플러그인을 사용하는 클라이언트와 통신 할 필요가없고 클라이언트와 서버의 협상 라운드 트립이 발생하는 것을 방지 할 수 합니다. 현재 이것은 기본 MySQL 인증 ( mysql_native_password )를 사용하는 계정에 적용됩니다.

    mysql 명령 행에서 --default-auth= plugin_name 옵션을 지정하면 프로그램에서 사용하도록 요구하는 클라이언트 측 플러그인을 명시 적으로 만들 수 있습니다. 그러나 사용자 계정이 다른 플러그인을 요구 한 경우,이 서버에 의해 무시됩니다.

    클라이언트 프로그램에서 플러그인을 찾을 수없는 경우, 플러그인이 배치되는 위치를 표시 --plugin-dir= dir_name 옵션을 지정합니다.

참고

--skip-grant-tables 옵션으로 서버를 시작하면 서버는 클라이언트 인증을 실행하지 않고 모든 클라이언트가 연결하는 것을 허용하는 인증 플러그인은로드 된로도 사용되지 않습니다. 이것은 안전하지 않기 때문에 원격 클라이언트가 연결을 방지하기 위해, --skip-networking 과 함께 --skip-grant-tables 를 사용할 필요가있을 수도 있습니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved