- 전제 조건
- GitLab에서 OpenID Connect 클라이언트 ID 및 비밀번호 가져오기
- Vault에서 OpenID Connect 활성화
- OIDC 구성 작성
- OIDC 역할 구성 작성
- Vault에 로그인
- Vault CLI를 사용하여 로그인(옵션)
GitLab OpenID Connect을 사용한 Vault 인증
Vault는 HashiCorp에서 제공하는 시크릿 관리 응용 프로그램입니다. 이를 사용하면 시스템 환경 변수, 암호화 키, 그리고 인증 토큰과 같은 민감한 정보를 저장하고 관리할 수 있습니다.
Vault는 Identity-based Access를 제공하며, 이는 사용자들이 원하는 여러 클라우드 제공 업체를 통해 인증할 수 있음을 의미합니다.
다음 내용에서는 Vault 사용자가 GitLab의 OpenID 인증 기능을 사용하여 자체를 인증하는 방법에 대해 설명합니다.
전제 조건
- Vault 설치.
- Vault 실행.
GitLab에서 OpenID Connect 클라이언트 ID 및 비밀번호 가져오기
먼저 Vault에 인증하기 위해 GitLab 애플리케이션을 생성하여 애플리케이션 ID와 비밀번호를 가져와야 합니다. 이를 위해 GitLab에 로그인하고 다음 단계를 따릅니다:
- 왼쪽 사이드 바에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- 왼쪽 사이드 바에서 애플리케이션을 선택합니다.
- 애플리케이션 이름 및 리디렉션 URI을 작성합니다.
- OpenID 범위를 선택합니다.
- 애플리케이션 저장을 선택합니다.
- 클라이언트 ID 및 클라이언트 비밀번호을 복사하거나 참조를 위해 페이지를 엽니다.
Vault에서 OpenID Connect 활성화
기본적으로 Vault에서는 OpenID Connect (OIDC)가 활성화되어 있지 않습니다.
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에서 제공된 Redirect URIs 및 범위를 Vault에 알려주어야 합니다.
터미널에서 다음 명령을 실행합니다:
vault write auth/oidc/role/demo - <<EOF
{
"user_claim": "sub",
"allowed_redirect_uris": "<your_vault_instance_redirect_uris>",
"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 인스턴스를 사용하는 경우, Vault 인스턴스에 대한 액세스를 허용하기 위해 bound_claims
를 지정해야 합니다. 그렇지 않으면 공개 계정을 가진 사용자는 Vault 인스턴스에 액세스할 수 있습니다.
Vault에 로그인
- Vault UI로 이동합니다. 예: http://127.0.0.1:8200/ui/vault/auth?with=oidc.
- 선택되어 있지 않다면,
OIDC
방식을 선택해야 합니다. -
Sign in With GitLab을 선택합니다. 그러면 모달 창이 열립니다:
-
Vault가 GitLab을 통해 로그인하도록 하려면 Authorize를 선택합니다. 이렇게 하면 인증된 사용자로서 Vault UI로 다시 이동됩니다.
Vault CLI를 사용하여 로그인(옵션)
이전 예제에서 만든 역할 구성을 사용하여 Vault에 로그인할 수도 있습니다. Vault CLI를 사용하여 Vault에 로그인하려면 터미널에서 다음 명령을 실행합니다:
vault login -method=oidc port=8250 role=demo
이 명령은 다음을 설정합니다:
-
role=demo
: Vault가 어떤 구성을 사용하여 로그인해야 하는지 알려줍니다. -
-method=oidc
: Vault가OIDC
로그인 방식을 사용하도록 설정합니다. -
port=8250
: GitLab이 리디렉션해야 하는 포트를 설정합니다. 이 포트 번호는 Redirect URIs를 나열할 때 GitLab이 제공하는 포트 번호와 일치해야 합니다.
이 명령을 실행한 후 터미널에 링크가 표시됩니다.