키 페어 인증 및 키 페어 순환

이 항목에서는 Snowflake에서 키 페어 인증 및 키 페어 순환을 사용하는 방법에 대한 설명을 제공합니다.

이 항목의 내용:

개요

Snowflake는 기본 인증(예: 사용자 이름 및 비밀번호) 대신 키 페어 인증 사용을 지원하여 인증 보안을 향상합니다.

이 인증 방법을 위해서는 2048비트 이상의 RSA 키 페어가 필요합니다. OpenSSL을 사용하여 PEM(Privacy Enhanced Mail) 개인-공개 키 페어를 생성할 수 있습니다. 일부의 지원되는 Snowflake 클라이언트 에서는 암호화된 개인 키를 사용하여 Snowflake에 연결할 수 있습니다. Snowflake 클라이언트를 사용하여 Snowflake에 연결 및 인증하는 Snowflake 사용자에게 공개 키가 할당됩니다.

또한, Snowflake는 보다 강력한 보안 및 거버넌스 환경을 준수할 수 있도록 공개 키 순환도 지원합니다.

지원되는 Snowflake 클라이언트

다음 테이블은 Snowflake 클라이언트에서 지원되는 키 페어 인증을 요약하여 제공합니다. 확인 표시(✔)는 전체 지원을 나타냅니다. 확인 표시가 없으면 키 페어 인증이 지원되지 않음을 나타냅니다.

클라이언트

키 페어 인증

키 페어 순환

암호화되지 않은 개인 키

SnowSQL(CLI 클라이언트)

Python용 Snowflake 커넥터

Spark용 Snowflake 커넥터

Kafka용 Snowflake 커넥터

Go 드라이버

JDBC 드라이버

ODBC 드라이버

Node.js 드라이버

.NET 드라이버

Snowflake용 PHP PDO 드라이버

키 페어 인증 구성하기

지원되는 모든 Snowflake 클라이언트용으로 키 페어 인증을 구성하려면 다음 단계를 완료합니다.

개인 키 생성하기

Snowflake에 연결하기 위해 사용하는 지원되는 Snowflake 클라이언트 에 따라 암호화되거나 암호화되지 않은 개인 키를 생성할 수 있는 옵션이 제공됩니다. 일반적으로는 암호화된 키를 생성하는 것이 더 안전합니다. Snowflake는 내부 보안 및 거버넌스 담당자에게 문의하여 생성할 키 타입을 결정한 후에 이 단계를 완료하는 것을 권장합니다.

암호화된 키 생성 명령에서는 키에 대한 액세스를 규정하는 암호 구문을 입력하라는 메시지를 표시합니다. Snowflake는 PCI DSS 표준을 준수하는 암호 구문을 사용하여 로컬에서 생성된 개인 키를 보호할 것을 권장합니다. 또한, Snowflake는 암호 구문을 안전한 위치에 저장하는 것도 권장합니다. 암호화된 키를 사용하여 Snowflake에 연결하는 경우 처음 연결할 때 암호 구문을 입력합니다. 암호 구문은 개인 키를 보호하기 위한 용도로만 사용되며, 절대로 Snowflake로 전송되지 않습니다.

PCI DSS 표준을 준수하여 길고 복잡한 암호 구문을 생성하려면:

  1. PCI 보안 표준 문서 라이브러리 에 액세스합니다.

  2. PCI DSS 의 경우 최신 버전과 원하는 언어를 선택합니다.

  3. 문서에 액세스하려면 양식을 입력합니다.

  4. Passwords/passphrases must meet the following: 를 검색하고 비밀번호/암호 구문 요구 사항, 테스트 및 지침에 대한 권장 사항을 준수합니다. 문서 버전에 따라 구문은 이름이 Requirement 8: Identify and authenticate access to system components 또는 유사한 이름인 섹션에 있을 수 있습니다.

시작하려면 터미널 창을 열고 개인 키를 생성합니다.

암호화된 버전의 개인 키 또는 암호화되지 않은 버전의 개인 키를 생성할 수 있습니다.

암호화되지 않은 버전을 생성하려면 다음 명령을 사용합니다.

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Copy

암호화된 버전을 생성하려면 다음 명령(-nocrypt 생략)을 사용합니다.

openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
Copy

이 명령에 따라 PEM 형식의 개인 키가 생성됩니다.

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6T...
-----END ENCRYPTED PRIVATE KEY-----
Copy

공개 키 생성하기

명령줄에서 개인 키를 참조하여 공개 키를 생성합니다. 다음 명령에서는 개인 키가 암호화되며 이름이 rsa_key.p8 인 파일에 포함되어 있는 것으로 가정합니다.

openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Copy

이 명령에 따라 PEM 형식의 공개 키가 생성됩니다.

-----BEGIN PUBLIC KEY-----
MIIBIj...
-----END PUBLIC KEY-----
Copy

개인 키와 공개 키를 안전하게 저장하기

공개 및 개인 키 파일을 로컬 디렉터리로 복사하여 저장합니다. 파일 경로를 기록해 둡니다. 개인 키는 PKCS#8(공개 키 암호화 표준) 형식을 사용하여 저장되며 이전 단계에서 지정한 암호 구문을 사용하여 암호화된다는 점에 유의하십시오.

그러나 파일은 운영 체제에서 제공하는 파일 권한 방식을 사용하여 무단 액세스로부터 보호되어야 합니다. 파일을 사용하지 않을 때 파일을 보호하는 것은 사용자의 책임입니다.

공개 키를 Snowflake 사용자에게 할당하기

ALTER USER 명령을 실행하여 Snowflake 사용자에게 공개 키를 할당합니다.

ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
Copy

참고

  • SECURITYADMIN 이상의 역할을 가진 사용자만 사용자를 변경할 수 있습니다.

  • SQL 문에서 공개 키 구분 기호를 제외합니다.

사용자의 공개 키 지문 확인하기

  1. 다음 명령을 실행하여 사용자의 공개 키 지문을 검색합니다.

    DESC USER jsmith;
    SELECT TRIM((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
      WHERE "property" = 'RSA_PUBLIC_KEY_FP'), 'SHA256:');
    
    Copy

    출력:

    Azk1Pq...
    
  2. 출력을 복사합니다.

  3. 명령줄에서 다음 명령을 실행합니다.

    openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
    
    Copy

    출력:

    writing RSA key
    Azk1Pq...
    
  4. 두 출력을 비교합니다. 두 출력이 모두 일치하면 사용자가 공개 키를 올바르게 구성한 것입니다.

키-페어 인증을 사용하도록 Snowflake 클라이언트 구성하기

키 페어 인증을 사용하여 Snowflake에 연결하도록 클라이언트를 업데이트합니다.

키-페어 순환 구성하기

Snowflake는 순환이 중단되지 않도록 다양한 활성 키를 지원합니다. 내부적으로 준수하는 만료 일정에 따라 공개 키 및 개인 키를 순환 및 교체합니다.

현재는 ALTER USERRSA_PUBLIC_KEYRSA_PUBLIC_KEY_2 매개 변수를 사용하여 최대 2개의 공개 키를 단일 사용자와 연결할 수 있습니다.

다음 단계를 완료하여 키 페어 순환을 구성하고 키를 순환합니다.

  1. 다음 업데이트로 키 페어 인증 구성하기 의 모든 단계를 완료합니다.

    • 새 개인 및 공개 키 세트를 생성합니다.

    • 공개 키를 사용자에게 할당합니다. 공개 키 값을 RSA_PUBLIC_KEY 또는 RSA_PUBLIC_KEY_2 중에서 현재 사용 중이 아닌 키 값으로 설정합니다. 예:

      ALTER USER jsmith SET RSA_PUBLIC_KEY_2='JERUEHtcve...';
      
      Copy
  2. 코드를 업데이트하여 Snowflake에 연결합니다. 새 개인 키를 지정합니다.

    Snowflake는 연결 정보와 함께 제출된 개인 키를 기준으로 인증에서 활성 공개 키가 올바른지 확인합니다.

  3. ALTER USER 명령을 사용하여 사용자 프로필에서 이전 공개 키를 제거합니다.

    ALTER USER jsmith UNSET RSA_PUBLIC_KEY;
    
    Copy