SAML 서명 및 암호화 구성

SAML 서명 및 암호화 구성 (Configure SAML signing and encryption)

Grafana는 서명되고 암호화된 응답을 지원하며, 요청은 서명만 지원해요. 이 문서는 SP(Grafana)와 IdP 간에 정보를 교환할 때 필요한 인증서와 개인 키, 서명 알고리즘 설정, 그리고 자체 서명 인증서 생성 예시를 다룹니다.

출처: Configure SAML signing and encryption

본문

인증서와 개인 키 (Certificate and private key)

일반적으로 인증서와 키는 IdP 메타데이터에 내장되어 있고 Grafana가 필요에 따라 자동으로 갱신해요. 하지만 IdP가 서명된 요청을 기대한다면 인증서와 개인 키를 직접 제공해야 해요.

SAML SSO 표준은 SP(Grafana)와 IdP 사이의 정보 교환에 비대칭 암호화를 사용해요. 이러한 암호화를 수행하려면 공개 부분과 개인 부분이 필요해요. 여기서 X.509 인증서가 공개 부분을, 개인 키가 개인 부분을 제공해요. 개인 키는 PKCS#8 형식으로 발급되어야 해요.

인증서와 키를 직접 제공할 때, Grafana는 certificateprivate_key를 지정하는 두 가지 방식을 지원해요.

  • 접미사 없이(certificate 또는 private_key) 설정하면 base64 인코딩된 파일 내용을 제공했다고 간주해요.
  • _path 접미사(certificate_path 또는 private_key_path)를 붙이면 Grafana는 입력된 값을 경로로 취급하고 파일 시스템에서 파일을 읽으려고 해요.

참고: 각 구성 옵션의 한 형태만 사용할 수 있어요. certificatecertificate_path를 모두 사용하는 등 여러 형태를 사용하면 오류가 발생해요.

인증서와 개인 키 설정은 항상 회사의 보안 팀과 함께 작업하세요. 직접 생성해야 한다면(예: 단기 또는 테스트 목적), 다음 예시를 사용해 PKCS#8 형식으로 키가 생성되도록 하세요.

서명 알고리즘 (Signature algorithm)

SAML 표준은 인증 및 로그아웃 요청 같은 보안에 중요한 메시지에 디지털 서명을 요구해요. signature_algorithm 옵션을 구성하면 Grafana는 구성된 개인 키와 인증서로 이러한 SAML 요청을 자동으로 서명해요.

지원되는 알고리즘:

  • rsa-sha1: 레거시 알고리즘이며 새 배포에는 권장하지 않아요.
  • rsa-sha256: 대부분의 사용 사례에 권장돼요.
  • rsa-sha512: 가장 강력한 보안이지만 성능에 영향을 줄 수 있어요.

중요 고려사항:

  • 서명 알고리즘은 IdP 구성과 정확히 일치해야 해요. 알고리즘이 일치하지 않으면 서명 검증 실패가 발생해요.
  • Grafana는 private_keycertificate 옵션에 지정된 키와 인증서로 서명해요.
  • 새 SAML 구현에는 rsa-sha256을 권장해요.

SAML 인증용 개인 키 생성 예시

1년간 유효한 자체 서명 인증서와 개인 키를 생성하는 예시:

$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

cert.pem과 key.pem 파일을 base64로 인코딩해요. (-w0 스위치는 Mac에서는 필요 없고 Linux에서만 필요해요.)

$ base64 -i key.pem -o key.pem.base64
$ base64 -i cert.pem -o cert.pem.base64

base64 인코딩된 값(key.pem.base64, cert.pem.base64 파일)은 certificateprivate key에 사용돼요. 제공하는 키는 개인 키 모양([REDACTED PRIVATE KEY]처럼 시작하는 PEM 블록)이어야 해요.

더 알아보기 (Learn more)