ストイックに生きたい
ArgoCD with AWS SSO
ArgoCD の SSOAWS SSO を使う
このエントリーをはてなブックマークに追加

前提

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

AWS SSOと一緒に使う

argocd.example.com にArgoCDが立っている前提で

  1. まずAWS SSOの設定をする

表示名や説明は任意のものを設定し、アプリケーションメタデータは下記のように設定する

metadata.png

  1. さっきの情報を元に dex.config を書く

ssoURL は先ほど作成したアプリケーションのAWS SSO サインイン URLをいれる
entityIssuerredirectURI は同じものをいれる
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: ~~~
  1. RBACの設定をする

これの書き方は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

Attribute mappings

先ほど後述すると書いた部分だが管理されているユーザー属性とマッピングをしやりとりをする必要がある。管理画面にはアプリケーションの中に属性マッピングという項目があるのでそこで設定を下記のように行う。

Supported AWS SSO attributesにどういったものが用意されているのか記載されている。

attr.png

ユーザーを作成し実際にどういった値が返ってくるのか下記に記載した。

user.png

attributevalue
${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
© Ryota Sakamoto, 2023