OneLogin 연동
OneLogin 연동
이 문서는 OneLogin으로 ArgoCD 애플리케이션을 인증하는 전체 과정을 안내합니다. OneLogin 내에서 커스텀 OIDC 애플리케이션을 만들고, OneLogin의 UserRoles를 사용해 Argo에서 권한을 결정하도록 ArgoCD를 구성합니다.
출처: 문서
본문
OneLogin
참고: 이 방법을 사용하고 있나요? 기여해 주세요! 이 IdP를 사용하고 있다면 이 문서에 기여하는 것을 고려해 주세요.
OneLogin과 ArgoCD 통합
이 지침은 ArgoCD 애플리케이션이 OneLogin으로 인증하도록 하는 전체 과정을 안내합니다. OneLogin 내에서 커스텀 OIDC 애플리케이션을 만들고, OneLogin에 설정된 UserRoles를 사용해 Argo에서 권한을 결정하도록 ArgoCD를 구성하게 됩니다.
OneLogin 앱 생성 및 구성
ArgoCD 애플리케이션이 OneLogin과 통신하려면 먼저 OneLogin 쪽에서 OIDC 애플리케이션을 생성하고 구성해야 합니다.
OIDC 애플리케이션 생성
애플리케이션을 생성하려면 다음을 수행하세요:
- OneLogin 포털로 이동한 다음 Administration > Applications로 이동하세요.
- "Add App"을 클릭하세요.
- 검색 필드에서 "OpenID Connect"를 검색하세요.
- 생성할 "OpenId Connect (OIDC)" 앱을 선택하세요.
- "Display Name" 필드를 업데이트하세요(예: "ArgoCD (Production)").
- "Save"를 클릭하세요.
OIDC 애플리케이션 설정 구성
이제 애플리케이션이 생성되었으니 앱의 설정을 구성할 수 있습니다.
Configuration 탭
"Configuration" 설정을 다음과 같이 업데이트하세요:
- 왼쪽의 "Configuration" 탭을 선택하세요.
- "Login Url" 필드를 https://argocd.myproject.com/auth/login으로 설정하세요. 호스트 이름은 자신의 것으로 교체하세요.
- "Redirect Url" 필드를 https://argocd.myproject.com/auth/callback으로 설정하세요. 호스트 이름은 자신의 것으로 교체하세요.
- "Save"를 클릭하세요.
참고: 위 필드가 설정되기 전에는 OneLogin이 다른 필드의 저장을 허용하지 않을 수 있습니다.
Info 탭
"Display Name", "Description", "Notes", 또는 OneLogin 포털에 표시되는 표시 이미지를 여기서 업데이트할 수 있습니다.
Parameters 탭
이 탭은 토큰에서 Argo로 전송되는 정보를 제어합니다. 기본적으로 Groups 필드가 있고 "Credentials are"는 "Configured by admin"으로 설정되어 있습니다. "Credentials are"는 기본값으로 두세요.
Groups 필드의 Value 구성 방법은 필요에 따라 다르지만, ArgoCD 권한에 OneLogin User roles를 사용하려면 Groups 필드의 Value를 다음과 같이 구성하세요:
- "Groups"를 클릭하세요. 모달이 나타납니다.
- "Default if no value selected" 필드를 "User Roles"로 설정하세요.
- 그 아래의 transform 필드를 "Semicolon Delimited Input"으로 설정하세요.
- "Save"를 클릭하세요.
사용자가 OneLogin으로 Argo에 로그인하려고 하면 OneLogin의 사용자 역할(예: Manager, ProductTeam, TestEngineering)이 토큰의 Groups 필드에 포함됩니다. 이것들은 Argo가 권한을 할당하는 데 필요한 값들입니다.
토큰의 groups 필드는 아래와 비슷할 것입니다:
"groups": [
"Manager",
"ProductTeam",
"TestEngineering",
],
Rules 탭
시작하는 데 여기 있는 설정을 수정할 필요는 없습니다.
SSO 탭
이 탭에는 ArgoCD 구성 파일에 넣어야 할 정보(API 엔드포인트, 클라이언트 ID, 클라이언트 시크릿)가 많이 포함되어 있습니다.
"Application Type"이 "Web"으로 설정되어 있는지 확인하세요.
"Token Endpoint"가 "Basic"으로 설정되어 있는지 확인하세요.
Access 탭
이 탭은 이 애플리케이션을 OneLogin 포털에서 볼 수 있는 사람을 제어합니다.
이 애플리케이션에 접근 권한을 부여하려는 역할을 선택하고 "Save"를 클릭하세요.
Users 탭
이 탭은 이 애플리케이션에 접근 권한이 있는 개별 사용자를 보여줍니다(보통 Access 탭에서 지정된 역할이 있는 사용자들).
시작하는 데 여기 있는 설정을 수정할 필요는 없습니다.
Privileges 탭
이 탭은 이 앱을 구성할 수 있는 OneLogin 사용자를 보여줍니다.
시작하는 데 여기 있는 설정을 수정할 필요는 없습니다.
ArgoCD의 OIDC 구성 업데이트
이제 OneLogin에서 OIDC 애플리케이션이 구성되었으므로, Argo 구성을 업데이트해 OneLogin과 통신하고 OneLogin으로 인증하는 사용자들의 권한을 제어할 수 있습니다.
OneLogin이 어디에 있는지 Argo에 알리기
Argo는 OneLogin과 통신하기 위해 구성 맵(argocd-cm)을 업데이트해야 합니다. 다음 yaml을 고려하세요:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
namespace: argocd
labels:
app.kubernetes.io/part-of: argocd
data:
url: https://<argocd.myproject.com>
oidc.config: |
name: OneLogin
issuer: https://<subdomain>.onelogin.com/oidc/2
clientID: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaaaaaaa
clientSecret: abcdef123456
# Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"]
requestedScopes: ["openid", "profile", "email", "groups"]
"url" 키에는 Argo 프로젝트의 호스트 이름 값이 있어야 합니다.
"clientID"는 OneLogin 애플리케이션의 SSO 탭에서 가져옵니다.
"issuer"는 OneLogin 애플리케이션의 SSO 탭에서 가져옵니다. issuer api 엔드포인트 중 하나입니다.
"clientSecret" 값은 OneLogin 애플리케이션의 SSO 탭에 있는 클라이언트 시크릿입니다.
참고: OneLogin으로 인증하려 할 때 invalid_client 오류가 발생하면 클라이언트 시크릿이 올바르지 않을 가능성이 있습니다. 이전 버전에서는 clientSecret 값이 base64로 암호화되어야 했지만, 이제는 더 이상 필요하지 않다는 점을 유의하세요.
OneLogin 인증 사용자에 대한 권한 구성
ArgoCD의 권한은 토큰의 Groups 필드로 전달되는 OneLogin 역할 이름을 사용해 구성할 수 있습니다. argocd-rbac-cm.yaml의 다음 yaml을 고려하세요:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-rbac-cm
namespace: argocd
labels:
app.kubernetes.io/part-of: argocd
data:
policy.default: role:readonly
policy.csv: |
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, TestEngineering, role:org-admin
OneLogin에서 사용자 역할이 "TestEngineering"인 사용자는 OneLogin으로 Argo에 로그인할 때 ArgoCD 관리자 권한을 받습니다. 다른 모든 사용자는 readonly 역할을 받습니다. 여기서 핵심은 "TestEngineering"이 토큰의 Group 필드로 전달된다는 것입니다(OneLogin의 Parameters 탭에서 지정됨).