ArgoCDではdexを使い認証・認可を行っている。そのため、LDAP・OIDC・SAML等を使うことができる。
動作確認したバージョンは v2.0.4
argocd: v2.0.4+0842d44
BuildDate: 2021-06-23T01:27:53Z
GitCommit: 0842d448107eb1397b251e63ec4d4bc1b4efdd6e
GitTreeState: clean
GoVersion: go1.16
Compiler: gc
Platform: linux/amd64
argocd.example.com
にArgoCDが立っている前提で
表示名や説明は任意のものを設定し、アプリケーションメタデータは下記のように設定する
dex.config
を書くssoURL
は先ほど作成したアプリケーションのAWS SSO サインイン URLをいれる
entityIssuer
と redirectURI
は同じものをいれる
caData
は先ほど作成したアプリケーションのAWS SSO 証明書をダウンロードしbase64したものを入れる
attr
に何を入れるかは後述
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
data:
url: https://argocd.example.com
dex.config: |
connectors:
- type: saml
id: saml
name: saml
config:
ssoURL: https://portal.sso.us-west-2.amazonaws.com/saml/assertion/~~~
entityIssuer: https://argocd.example.com/api/dex/callback
redirectURI: https://argocd.example.com/api/dex/callback
caData: $dex.saml.caData
usernameAttr: subject
emailAttr: email
apiVersion: v1
kind: Secret
metadata:
name: argocd-secret
namespace: argocd
stringData:
dex.saml.caData: ~~~
これの書き方はRBAC Configurationを参考に
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-rbac-cm
data:
policy.default: role:readonly
policy.csv: |
g, ryota-sakamoto, role:admin
scopes: |
- name
先ほど後述すると書いた部分だが管理されているユーザー属性とマッピングをしやりとりをする必要がある。管理画面にはアプリケーションの中に属性マッピングという項目があるのでそこで設定を下記のように行う。
Supported AWS SSO attributesにどういったものが用意されているのか記載されている。
ユーザーを作成し実際にどういった値が返ってくるのか下記に記載した。
attribute | value |
---|---|
${user:AD_GUID} | 926771f849-5b9aa823-3145-4b54-b974-7939f62d405b |
${user:email} | [email protected] |
${user:familyName} | Sakamoto |
${user:givenName} | Ryota |
${user:middleName} | |
${user:name} | Ryota Sakamoto!!! |
${user:preferredUsername} | Ryota Sakamoto!!! |
${user:subject} | ryota-sakamoto |