- 사전 요구 사항
- GitLab에서 OpenID Connect 클라이언트 ID 및 비밀 가져오기
- Vault에서 OpenID Connect 활성화
- OIDC 구성 작성
- OIDC 역할 구성 작성
- Vault에 로그인
- Vault CLI를 사용하여 로그인하기 (선택 사항)
GitLab OpenID Connect로 Vault 인증
Vault는 HashiCorp에서 제공하는 비밀 관리 애플리케이션입니다.
비밀 환경 변수, 암호화 키 및 인증 토큰과 같은 민감한 정보를 저장하고 관리할 수 있습니다.
Vault는 Identity-based Access를 제공하므로 Vault 사용자는 선호하는 여러 클라우드 제공자를 통해 인증할 수 있습니다.
다음 내용에서는 Vault 사용자가 OpenID 인증 기능을 사용하여 GitLab을 통해 인증할 수 있는 방법을 설명합니다.
사전 요구 사항
- Vault 설치하기.
- Vault를 실행하십시오.
GitLab에서 OpenID Connect 클라이언트 ID 및 비밀 가져오기
먼저 Vault에 인증하기 위해 애플리케이션 ID와 비밀을 얻기 위해 GitLab 애플리케이션을 생성해야 합니다.
이를 위해 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 구성 작성
Vault에게 GitLab에서 생성된 애플리케이션 ID 및 비밀을 제공하고 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 역할 구성 작성
Vault에게 애플리케이션을 생성할 때 GitLab에 제공한 리디렉션 URI 및 범위를 알려야 합니다.
터미널에서 다음 명령을 실행합니다:
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
역할을 생성하고 있습니다.
bound_claims
를 지정하여 그룹 또는 프로젝트의 구성원만 액세스할 수 있도록 해야 합니다.그렇지 않으면 공개 계정이 있는 누구나 Vault 인스턴스에 액세스할 수 있습니다.
Vault에 로그인
-
Vault UI로 이동합니다. 예: http://127.0.0.1:8200/ui/vault/auth?with=oidc.
-
OIDC
방법이 선택되지 않은 경우, 드롭다운 목록을 열고 선택합니다. -
GitLab로 로그인을 선택하면 모달 창이 열립니다:
-
Vault가 GitLab을 통해 로그인할 수 있도록 Authorize를 선택합니다. 그러면 인증된 사용자로서 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이 리디렉션할 포트를 설정합니다. 이 포트 번호는 Redirect URIs를 나열할 때 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.