GitLab OpenID Connect를 사용한 Vault 인증
Offering: GitLab Self-Managed, GitLab Dedicated
Vault는 HashiCorp에서 제공하는 시크릿 관리 애플리케이션입니다. Vault는 ID 기반 액세스를 제공하므로 Vault 사용자는 선호하는 여러 클라우드 공급자를 통해 인증할 수 있습니다. 다음 내용은 Vault 사용자가 OpenID 인증 기능을 사용하여 GitLab을 통해 인증하는 방법을 설명합니다.
Vault는 HashiCorp에서 제공하는 시크릿 관리 애플리케이션입니다. 비밀 환경 변수, 암호화 키, 인증 토큰과 같은 민감한 정보를 저장하고 관리할 수 있습니다.
Vault는 ID 기반 액세스를 제공하므로 Vault 사용자는 선호하는 여러 클라우드 공급자를 통해 인증할 수 있습니다.
다음 내용은 Vault 사용자가 OpenID 인증 기능을 사용하여 GitLab을 통해 인증하는 방법을 설명합니다.
사전 요구 사항#
- Vault를 설치하세요.
- Vault를 실행하세요.
GitLab에서 OpenID Connect 클라이언트 ID와 시크릿 가져오기#
먼저 Vault에 인증하기 위한 애플리케이션 ID와 시크릿을 얻기 위해 GitLab 애플리케이션을 만들어야 합니다. 이를 위해 GitLab에 로그인하고 다음 단계를 따르세요:
- 오른쪽 상단 모서리에서 아바타를 선택하세요.
- 프로필 편집을 선택하세요.
- 왼쪽 사이드바에서 액세스 > 애플리케이션을 선택하세요.
- 애플리케이션 이름과 리다이렉트 URI를 입력하세요.
- OpenID 범위를 선택하세요.
- 애플리케이션 저장을 선택하세요.
- 클라이언트 ID와 클라이언트 시크릿을 복사하거나 참조를 위해 페이지를 열어 두세요.

Vault에서 OpenID Connect 활성화#
OpenID Connect(OIDC)는 기본적으로 Vault에서 활성화되어 있지 않습니다.
Vault에서 OIDC 인증 공급자를 활성화하려면 터미널 세션을 열고 다음 명령을 실행하세요:
vault auth enable oidc
터미널에서 다음 출력이 표시되어야 합니다:
Success! Enabled oidc auth method at: oidc/
OIDC 구성 쓰기#
GitLab이 생성한 애플리케이션 ID와 시크릿을 Vault에 제공하고 Vault가 GitLab을 통해 인증할 수 있도록 하려면 터미널에서 다음 명령을 실행하세요:
vault write auth/oidc/config \
oidc_discovery_url="https://gitlab.com" \
oidc_client_id="<your_application_id>" \
oidc_client_secret="<your_secret>" \
default_role="demo" \
bound_issuer="localhost"
<your_application_id> 및 <your_secret>을 앱에 대해 생성된 애플리케이션 ID와 시크릿으로 교체하세요.
터미널에서 다음 출력이 표시되어야 합니다:
Success! Data written to: auth/oidc/config
OIDC 역할 구성 쓰기#
애플리케이션을 만들 때 GitLab에 제공한 리다이렉트 URI와 범위를 Vault에 알려주어야 합니다.
터미널에서 다음 명령을 실행하세요:
vault write auth/oidc/role/demo - <",
"bound_audiences": "<your_application_id>",
"oidc_scopes": "<openid>",
"role_type": "oidc",
"policies": "demo",
"ttl": "1h",
"bound_claims": { "groups": ["<yourGroup/yourSubgrup>"] }
}
EOF
교체:
<your_vault_instance_redirect_uris>를 Vault 인스턴스가 실행 중인 위치와 일치하는 리다이렉트 URI로 교체하세요.<your_application_id>를 앱에 대해 생성된 애플리케이션 ID로 교체하세요.
oidc_scopes 필드에는 openid가 포함되어야 합니다.
이 구성은 만들고 있는 역할의 이름으로 저장됩니다. 이 예시는 demo 역할을 만듭니다.
GitLab.com과 같은 공개 GitLab 인스턴스를 사용하는 경우, 그룹 또는 프로젝트 구성원만 액세스할 수 있도록 bound_claims를 지정해야 합니다.
그렇지 않으면 공개 계정이 있는 모든 사람이 Vault 인스턴스에 액세스할 수 있습니다.
Vault에 로그인#
-
Vault UI로 이동하세요. 예: http://127.0.0.1:8200/ui/vault/auth?with=oidc.
-
OIDC방법이 선택되지 않은 경우 드롭다운 목록을 열고 선택하세요. -
GitLab으로 로그인을 선택하면 대화 상자가 열립니다:

-
Vault가 GitLab을 통해 로그인할 수 있도록 인증을 선택하세요. 그러면 인증된 사용자로 Vault UI로 돌아갑니다.

Vault CLI를 사용하여 로그인 (선택 사항)#
Vault CLI를 사용하여 Vault에 로그인할 수도 있습니다.
-
이전 예시에서 만든 역할 구성으로 로그인하려면 터미널에서 다음 명령을 실행하세요:
vault login -method=oidc port=8250 role=demo이 명령은 다음을 설정합니다:
role=demo: Vault가 어떤 구성으로 로그인할지 알 수 있도록-method=oidc: Vault가OIDC로그인 방법을 사용하도록 설정port=8250: GitLab이 리다이렉트할 포트를 설정합니다. 이 포트 번호는 리다이렉트 URI를 나열할 때 GitLab에 제공한 포트와 일치해야 합니다.
이 명령을 실행하면 터미널에 링크가 표시되어야 합니다.
-
웹 브라우저에서 이 링크를 여세요:

터미널에 다음이 표시되어야 합니다:
Success! You are now authenticated. The token information displayed below is already stored in the token helper. You do NOT need to run "vault login" again. Future Vault requests will automatically use this token.
