싱글 사인온(SSO)

Last reviewed 2024-06-26 UTC

싱글 사인온(SSO)을 사용하도록 Cloud ID 또는 Google Workspace 계정을 구성할 수 있습니다. SSO를 사용 설정하면 사용자가 Google 서비스에 액세스하려고 할 때 비밀번호를 입력하라는 메시지가 표시되지 않습니다. 대신 인증을 위해 외부 ID 공급업체(IdP)로 리디렉션됩니다.

SSO를 사용하면 다음과 같은 몇 가지 이점이 있습니다.

  • 기존 사용자 인증 정보를 사용하여 인증할 수 있고 사용자 인증 정보를 자주 입력할 필요가 없으므로 사용자에게 더 나은 경험을 제공합니다.
  • 기존 IdP가 사용자 인증을 위한 레코드 시스템으로 유지됩니다.
  • 비밀번호를 Cloud ID 또는 Google Workspace에 동기화할 필요가 없습니다.

SSO를 사용하려면 사용자에게 Cloud ID 또는 Google Workspace의 사용자 계정과 외부 IdP의 해당하는 ID가 있어야 합니다. 따라서 SSO는 일반적으로 사용자를 Cloud ID 또는 Google Workspace에 자동으로 프로비저닝하는 외부 권한 소스와 함께 사용됩니다.

싱글 사인온(SSO) 프로세스

Cloud ID 및 Google Workspace은 싱글 사인온(SSO)에 대해 보안 보장 마크업 언어(SAML) 2.0을 지원합니다. SAML은 SAML IdP와 SAML 서비스 제공업체 간에 인증 및 승인 데이터를 교환하기 위한 개방형 표준입니다. Cloud ID 또는 Google Workspace에 SSO를 사용하면 외부 IdP가 SAML IdP이고 Google은 SAML 서비스 제공업체가 됩니다.

Google은 SAML 2.0 HTTP 리디렉션 POST 바인딩을 구현합니다. 이 바인딩은 SAML IdP와 SAML 서비스 제공업체 간에 인증 정보가 교환되는 방법을 지정합니다. 다음 다이어그램은 SSO를 사용하여 Google Cloud 콘솔에 액세스할 때 이 프로세스가 작동하는 방식의 예시를 보여줍니다.

SSO를 사용하여 Google Cloud 콘솔에 액세스

  1. 브라우저에서 Google Cloud 콘솔 또는 인증이 필요한 다른 Google 리소스를 가리킵니다.
  2. 아직 인증되지 않았으므로 Google Cloud 콘솔은 브라우저를 Google 로그인으로 리디렉션합니다.
  3. Google 로그인은 이메일 주소를 입력하라는 로그인 페이지를 표시합니다.
  4. 이메일 주소를 입력하고 양식을 제출합니다.
  5. Google 로그인은 이메일 주소와 연결된 Cloud ID 또는 Google Workspace 계정을 조회합니다.
  6. 연결된 Cloud ID 또는 Google Workspace 계정에는 싱글 사인온(SSO)이 사용 설정되어 있으므로 Google 로그인은 브라우저를 구성된 외부 IdP의 URL로 리디렉션합니다. 리디렉션을 실행하기 전에 URL에 RelayStateSAMLRequest의 두 매개변수가 추가됩니다.

    • RelayState에는 외부 IdP가 나중에 다시 전달해야 하는 식별자가 포함됩니다.
    • SAMLRequest에는 디플레이트, base64로 인코딩, URL로 인코딩된 XML 문서인 SAML 인증 요청이 포함됩니다. 디코딩된 양식에서 SAML 인증 요청은 다음과 유사합니다.

      <samlp:AuthnRequest
              ProviderName="google.com"
              IsPassive="false"
              AssertionConsumerServiceURL="https://www.google.com/a/example.com/acs"
              ...>
        <saml:Issuer xmlns:saml="...">google.com</saml:Issuer>
        <samlp:NameIDPolicy
              AllowCreate="true"
              Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
      </samlp:AuthnRequest>
      

    이 요청 예시는 외부 IdP가 사용자를 인증하고 대상 google.com에 대한 SAML 어설션을 만든 다음 https://www.google.com/a/example.com/acs의 어설션 소비자 서비스(ACS)에 게시하도록 지시합니다.

    ACS URL(example.com)에 포함된 도메인은 Google Workspace 또는 Cloud ID 계정의 기본 도메인에 해당합니다.

    SSO를 구성할 때 도메인별 발급기관 기능을 사용하는 경우 발급기관은 google.com가 아닌 google.com/a/DOMAIN입니다. 여기서 DOMAIN는 Cloud ID 또는 Google Workspace 계정의 기본 도메인입니다.

    인증을 위해 외부 IdP에서 수행하는 단계는 IdP와 관련 구성에 따라 다릅니다. 예를 들어 로그인 대화상자가 표시되거나 MFA 또는 지문을 요청하는 메시지가 표시될 수 있습니다. 이러한 단계가 성공적으로 완료되면 SAML 교환이 계속됩니다.

    SSO를 사용하여 SAML 교환

  7. 외부 IdP는 브라우저에서 즉시 ACS URL로 HTTP POST 요청을 보내도록 특별히 제작된 HTML 페이지를 반환합니다. 이 요청에는 두 개의 매개변수가 포함됩니다.

    • RelayState: SAML 인증 요청에서 IdP로 원래 전달된 값이 포함됩니다.
    • SAMLResponse: base64로 인코딩된 SAML 어설션이 포함됩니다. SAML 어설션은 IdP가 사용자를 성공적으로 인증했음을 나타내는 XML 문서입니다. 디코딩된 양식에서 SAML 어설션은 다음과 유사합니다.

      <samlp:Response ...>
        ...
        <Assertion x...>
          <Issuer>https://idp.example.org/</Issuer>
          <Signature ...>
            ...
          </Signature>
          <Subject>
            <NameID Format="...:nameid-format:emailAddress">bob@example.org</NameID>
            ...
          </Subject>
          <Conditions NotBefore="..." NotOnOrAfter="...">
            <AudienceRestriction>
              <Audience>google.com</Audience>
            </AudienceRestriction>
          </Conditions>
          <AttributeStatement>
            ...
          </AttributeStatement>
          <AuthnStatement AuthnInstant="..." ...>
            <AuthnContext>
              <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
            </AuthnContext>
          </AuthnStatement>
        </Assertion>
      </samlp:Response>
      

    이 어설션 예시는 대상 google.com(SAML 인증 요청의 발급기관과 일치)에 대해 발급되었으며 IdP https://idp.example.org/에서 사용자 bob@example.org를 인증했음을 나타냅니다.

    SAML 어설션에는 디지털 서명도 포함됩니다. IdP는 서명 인증서의 비공개 키를 사용하여 이 서명을 만듭니다. 비공개 키는 IdP에만 알려집니다. 해당 공개 키는 Cloud ID 또는 Google Workspace의 SSO 구성에 포함되어 있으며 Google 로그인과 공유됩니다.

    SAML 어설션에는 SAML 서비스 제공업체가 어설션의 진위를 확인할 수 있는 디지털 서명이 포함되어 있습니다.

  8. 브라우저가 SAML 어설션을 Google ACS 엔드포인트에 게시합니다.

  9. ACS 엔드포인트가 SAML 어설션의 디지털 서명을 확인합니다. 이때 어설션이 신뢰할 수 있는 외부 IdP에서 시작된 후 변경되지 않았는지 확인합니다. 서명이 유효하다고 가정하고 ACS 엔드포인트는 대상 정보를 확인하고 NameID 속성을 읽는 어설션의 콘텐츠를 분석합니다.

  10. ACS 엔드포인트는 SAML 어설션의 NameID를 사용자의 기본 이메일 주소와 일치시켜 사용자 계정을 찾습니다. 그런 다음 엔드포인트가 세션을 시작합니다.

  11. 엔드포인트가 RelayState 매개변수에 인코딩된 정보를 기반으로 원래 액세스하려고 했던 리소스의 URL을 결정하면 사용자가 Google Cloud 콘솔로 리디렉션됩니다.

IdP에서 시작하는 로그인

이전 섹션에서 설명한 프로세스를 서비스 제공업체에서 시작하는 로그인이라고도 합니다. 이 프로세스는 서비스 제공업체(앞의 예시에서는 Google Cloud 콘솔)에서 시작되기 때문입니다.

SAML은 IdP에서 시작하는 로그인이라는 대체 흐름도 정의하는데, 이 프로세스는 IdP에서 시작됩니다. Google은 이 흐름을 지원하지 않지만 다음 URL을 사용하여 서비스 제공업체에서 시작하는 로그인을 시작하면 유사한 결과를 얻을 수 있습니다.

https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://console.cloud.google.com/

이 예시에서 DOMAIN은 Cloud ID 또는 Google Workspace 계정의 기본 도메인입니다.

다중 인증(MFA)

사용자 계정을 무단 액세스로부터 보호하기 위해 사용자에게 추가 인증 수단을 제공하도록 요청할 수 있습니다. 싱글 사인온(SSO)을 사용할 때 다단계 인증을 구현하는 방법에는 두 가지가 있습니다.

  1. 외부 IdP가 다단계 인증을 지원하면 SAML 기반 로그인 프로세스의 일부로 다단계 인증을 수행하도록 할 수 있습니다. 이 경우 Cloud ID 또는 Google Workspace에는 추가 구성이 필요하지 않습니다.
  2. IdP가 다단계 인증을 지원하지 않으면 사용자는 외부 IdP로 인증한 직후에 2단계 인증을 수행하도록 Cloud ID 또는 Google Workspace를 구성할 수 있습니다.

네트워킹

SAML 2.0 HTTP 리디렉션 바인딩에서 IdP 및 서비스 제공업체는 직접 통신하지 않습니다. 대신 다음 다이어그램과 같이 모든 통신이 사용자의 브라우저를 통해 릴레이됩니다.

사용자의 브라우저를 통해 전달되는 통신

이러한 아키텍처를 고려하면 사용자가 회사 네트워크에서 액세스할 수 있으면 IdP가 인터넷을 통해 노출되거나 인터넷에 액세스할 필요가 없습니다.

외부 IdP 구성

Cloud ID 및 Google Workspace를 사용하면 다음 기능을 사용해서 싱글 사인온(SSO)을 구성할 수 있습니다.

  • SAML 프로필: 통합하려는 각 IdP에 대해 SAML 프로필을 만들 수 있습니다. Cloud ID 또는 Google Workspace 계정의 각 사용자, 그룹, 조직 단위에 대해 이들이 SSO를 사용해야 하는지 여부 그리고 사용해야 하는 SAML 프로필을 결정합니다.

  • 기존 조직 SSO 프로필: 단일 IdP와 통합할 단일 조직 프로필을 만들 수 있습니다. Cloud ID 또는 Google Workspace 계정의 각 사용자, 그룹, 조직 단위에 대해 이들이 SSO를 사용해야 하는지 여부를 결정합니다.

IdP를 구성하는 방법은 SAML 프로필을 사용하는지 또는 기본 조직 프로필을 사용하는지에 따라 다릅니다. 다음 표에는 호환성을 보장하기 위해 일반적으로 외부 IdP에서 구성해야 하는 설정이 요약되어 있습니다.

구성 기본 조직 프로필용
필수 설정
SAML 프로필용
필수 설정
비고
이름 ID 사용자의 기본 이메일 주소 사용자의 기본 이메일 주소
이름 ID 형식 urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
엔티티 ID

도메인별 발급기관 기능이 사용 설정된 경우:

google.com/a/DOMAIN

도메인별 발급기관 기능이 사용 중지된 경우(기본값):

google.com

여러 Google Workspace 또는 Cloud ID 계정을 동일한 IdP와 통합하려면 도메인별 발급기관 기능을 사용합니다. 그렇지 않으면 사용 중지 상태로 둡니다.

SAML 프로필의 고유 엔티티 ID입니다.

SAML 프로필의 생성 날짜에 따라 엔티티 ID에 다음 형식 중 하나가 사용됩니다.

https://accounts.google.com/samlrp/metadata?rpid=ID

https://accounts.google.com/samlrp/ID

ACS URL 패턴(또는 리디렉션 URL) https://www.google.com/a/* SAML 프로필의 고유 ACS URL입니다.

SAML 프로필 생성 날짜에 따라 URL에 다음 형식 중 하나가 사용됩니다.

https://accounts.google.com/samlrp/acs?rpid=ID

https://accounts.google.com/samlrp/ID/acs

서명 요청 사용 안함 사용 안함 Google 로그인에서 발급한 SAML 인증 요청은 서명되지 않습니다.
어설션 서명 사용 사용 SAML 어설션은 진위 확인을 위해 Google 로그인을 사용 설정하도록 서명되어야 합니다.

관리 콘솔에서 SSO를 설정할 때 토큰 서명 키 쌍의 공개 키를 업로드해야 합니다.
어설션 암호화 사용 안함 사용 안함
서명 알고리즘 RSA-SHA256 RSA-SHA256 RSA-SHA256(RS256으로 줄여 쓰기도 함)

다음 단계