Skip to main content

SAML 구성 참조

조직 또는 엔터프라이즈의 GitHub Enterprise Cloud에서 SAML 메타데이터를 볼 수 있으며, 사용 가능한 SAML 특성 및 응답 요구 사항에 대해 자세히 알아볼 수 있습니다.

SAML 구성 정보

GitHub Enterprise Cloud에 대한 인증에 SAML SSO(Single Sign-On)를 사용하려면 외부 SAML IdP(ID 공급자)와 GitHub Enterprise Cloud의 엔터프라이즈 또는 조직 모두를 구성해야 합니다. SAML 구성에서 GitHub Enterprise Cloud은 SAML SP(Service Provider)로 작동합니다. 엔터프라이즈 인증에 대한 자세한 내용은 "ID 및 액세스 관리 정보"을(를) 참조하세요.

GitHub Enterprise Cloud은(는) SAML 2.0 사양에 따라 통합을 제공합니다. 자세한 내용은 OASIS 웹 사이트의 SAML Wiki를 참조하세요.

GitHub Enterprise Cloud에 SAML SSO를 구성할 때는 SAML IdP의 고유한 값을 입력해야 하며, IdP의 GitHub Enterprise Cloud에 있는 고유한 값도 입력해야 합니다. 인증에 대한 자세한 내용 참조

SAML 메타데이터

GitHub Enterprise Cloud에 대한 SP 메타데이터는 SAML SSO를 사용하는 조직 또는 기업에서 사용할 수 있습니다. GitHub Enterprise Cloud에서는 urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST 바인딩을 사용합니다.

조직

엔터프라이즈의 개별 조직에 SAML SSO를 구성할 수 있습니다. 또한 GitHub Enterprise Cloud에서 개별 조직을 사용하고 엔터프라이즈 계정을 사용하지 않는 경우에는 조직에 SAML SSO를 구성할 수도 있습니다. 자세한 내용은 "조직에 대한 SAML Single Sign-On 관리"을(를) 참조하세요.

GitHub.com에 있는 조직의 SP 메타데이터는 https://github.com/orgs/ORGANIZATION/saml/metadata에서 사용할 수 있습니다. 여기서 ORGANIZATION은 GitHub.com에 있는 조직의 이름입니다.

기타 이름설명예시
SP 엔터티 IDSP URL, 대상 그룹 제한GitHub.com에 있는 조직의 최상위 URLhttps://github.com/orgs/ORGANIZATION
SP 어설션 소비자 서비스(ACS) URL회신, 수신자 또는 대상 URLIdP가 SAML 응답을 보내는 URLhttps://github.com/orgs/ORGANIZATION/saml/consume
SP SSO(Single Sign-On) URL
IdP가 SSO로 시작하는 URLhttps://github.com/orgs/ORGANIZATION/sso

엔터프라이즈

GitHub.com에 있는 엔터프라이즈의 SP 메타데이터는 https://github.com/enterprises/ENTERPRISE/saml/metadata에서 사용할 수 있습니다. 여기서 ENTERPRISE는 GitHub.com에 있는 엔터프라이즈의 이름입니다.

기타 이름설명예시
SP 엔터티 IDSP URL, 대상 그룹 제한GitHub.com에 있는 엔터프라이즈의 최상위 URLhttps://github.com/enterprises/ENTERPRISE
SP 어설션 소비자 서비스(ACS) URL회신, 수신자 또는 대상 URLIdP가 SAML 응답을 보내는 URLhttps://github.com/enterprises/ENTERPRISE/saml/consume
SP SSO(Single Sign-On) URL
IdP가 SSO로 시작하는 URLhttps://github.com/enterprises/ENTERPRISE/saml/sso

SAML 특성

다음은 GitHub Enterprise Cloud에 사용할 수 있는 SAML 특성입니다.

이름필수설명
NameID영구 사용자 식별자입니다. 영구 이름 식별자 형식을 사용할 수 있습니다. 엔터프라이즈를 Enterprise Managed Users와 함께 사용하는 경우, 대체 어설션 중 하나가 제공되지 않는 한 GitHub Enterprise Cloud은 사용자 이름으로 사용할 NameID 요소를 정규화합니다. 자세한 내용은 "외부 인증에 대한 사용자 이름 고려 사항"을(를) 참조하세요.

참고: 사람이 읽을 수 있는 영구 식별자를 사용하는 것이 중요합니다. 임시 식별자 형식(예:urn:oasis:names:tc:SAML:2.0:nameid-format:transient)을 사용하면 로그인할 때마다 계정이 다시 연결되므로 권한 부여 관리에 악영향을 미칠 수 있습니다.
SessionNotOnOrAfterGitHub Enterprise Cloud에서 연결된 세션을 무효화하는 날짜입니다. 무효화 후 엔터프라이즈의 리소스에 액세스하려면 사용자는 다시 인증해야 합니다. 자세한 내용은 "세션 기간 및 시간 제한"을 참조하세요.
emails사용자의 이메일 주소입니다. GitHub Enterprise Server 및 GitHub Enterprise Cloud 사이에서 라이선스 사용을 동기화한 경우 GitHub Connect에서는 emails를 사용하여 여러 제품에서 고유한 사용자를 식별합니다. 자세한 내용은 "AUTOTITLE"을(를) 참조하세요.
public_keys엔터프라이즈에 SAML SSO를 구성하고 Enterprise Managed Users을(를) 사용하는 경우 사용자의 퍼블릭 SSH 키입니다. 복수의 키를 지정할 수 있습니다.
gpg_keys엔터프라이즈에 SAML SSO를 구성하고 Enterprise Managed Users를 사용하는 경우, 사용자의 GPG 키입니다. 복수의 키를 지정할 수 있습니다.

특성에 대해 둘 이상의 값을 지정하려면 여러 <saml2:AttributeValue> 요소를 사용합니다.

<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
    <saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>

SAML 응답 요구 사항

GitHub Enterprise Cloud에서는 IdP의 응답 메시지가 다음 요구 사항을 충족할 것을 요구합니다.

  • IdP는 루트 응답 문서의 <Destination> 요소에서 제공되고 루트 응답 문서에 서명된 경우에만 ACS URL과 일치해야 합니다. IdP가 어설션에 서명하면 GitHub Enterprise Cloud은 어설션을 무시합니다.

  • IdP는 항상 <Audience> 요소를 <AudienceRestriction> 요소의 일부로 제공해야 합니다. 값은 GitHub Enterprise Cloud의 EntityId와 일치해야 합니다.

    • 조직에 SAML을 구성한 경우 이 값은 https://github.com/orgs/ORGANIZATION입니다.
    • 조직에 SAML을 구성하는 경우 이 URL은 https://github.com/enterprises/ENTERPRISE입니다.
  • IdP에서 디지털 서명을 사용하여 응답에 있는 각 어설션을 보호해야 합니다. 각 개별 <Assertion> 요소에 서명하거나 <Response> 요소에 서명하여 디지털 서명으로 보호할 수 있습니다.

  • IdP에서 <NameID> 요소를 <Subject> 요소의 일부로 제공해야 합니다. 모든 영구 이름 식별자 형식을 사용할 수 있습니다.

  • IdP에는 ACS URL로 설정해야 하는 Recipient 특성이 포함되어야 합니다. 다음 예제에서는 이 특성을 확인할 수 있습니다.

    <samlp:Response ...>
      <saml:Assertion ...>
        <saml:Subject>
          <saml:NameID ...>...</saml:NameID>
          <saml:SubjectConfirmation ...>
            <saml:SubjectConfirmationData Recipient="https://github.com/enterprises/ENTERPRISE/saml/consume" .../>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AttributeStatement>
          <saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...>
            <saml:AttributeValue>monalisa</saml:AttributeValue>
          </saml:Attribute>
        </saml:AttributeStatement>
      </saml:Assertion>
    </samlp:Response>
    

세션 기간 및 시간 제한

사용자가 IdP를 사용하여 인증하면 권한이 무기한 유지되는 일을 방지하기 위해, GitHub Enterprise Cloud에서는 엔터프라이즈 리소스에 액세스할 수 있는 각 사용자 계정에 대한 세션을 주기적으로 무효화합니다. 무효화되면 사용자는 IdP를 다시 한 번 인증해야 합니다.

기본적으로 IdP에서 SessionNotOnOrAfter 특성에 대한 값을 어설션하지 않는 경우 GitHub Enterprise Cloud에서는 IdP를 사용해 인증에 성공한 후 24시간이 지나면 세션을 무효화합니다.

GitHub Enterprise Cloud은(는) IdP에서 SessionNotOnOrAfter 특성 및 값.

사용자 지정 세션 기간 값을 24시간 미만으로 정의할 경우 GitHub Enterprise Cloud이(가) GitHub Enterprise Cloud에서 리디렉션을 시작할 때마다 인증 메시지를 표시할 수 있습니다.

인증 오류를 방지하려면 최소 세션 기간을 4시간을 지정하는 것이 좋습니다. 자세한 정보는 "SAML 인증 문제 해결"을(를) 참조하세요.

참고:

  • Microsoft Entra ID(이전의 Azure AD)의 경우 SAML 토큰에 대한 구성 가능한 수명 정책은 GitHub Enterprise Cloud에 대한 세션 시간 제한을 제어하지 않습니다.
  • OKTA에서는 현재 GitHub Enterprise Cloud을 사용한 SAML 인증 과정에서 SessionNotOnOrAfter 특성을 보내지 않습니다. 자세한 내용은 OKTA에 문의하세요.