Ncloud Single Sign-Onで OIDC認証を設定して kubectlを認証するユースケース

Prev Next

VPC環境で利用できます。

OpenID Connect(OIDC)認証設定で Ncloud Single Sign-On Tenantを Issuerとして追加し、ポータルログインを通じて kubectlを使用するユースケースです。

参考

ユースケースのテストのために予め準備する内容は次の通りです。

oidc-login pluginの設定

  1. Ncloud Single Sign-Onで作成した Issuer URLと ClientID、ClientSecretで oidc-login setupを実行します。
    • ブラウザーにログイン画面が表示されたらログインします。既にログインした状態ならログイン画面は表示されません。
      kubectl oidc-login setup \
      --oidc-issuer-url=https://sso.ncloud.com/tenants/f42162be-f574-477f-985b-c624579f2b08 \
      --oidc-client-id=bf24746a-1957-4d45-8ad6-da86029296b2 \
      --oidc-client-secret=22202039-c06d-4ad0-95d0-fb537378cc20
      
  2. id_tokenの内容を確認します。
    {
      "sub": "bcf8067c-da7e-4818-ae58-39add6bd7e6a",
      "aud": "bf24746a-1957-4d45-8ad6-da86029296b2",
      "id_no": "bcf8067c-da7e-4818-ae58-39add6bd7e6a",
      "user_type": "CUSTOMER",
      "azp": bf24746a-1957-4d45-8ad6-da86029296b2",
      "user_name": "nbp",
      "iss": "https:\/\/sso.ncloud.com\/tenants\/f42162be-f574-477f-985b-c624579f2b08",
      "mbr_no": "2551575",
      "exp": 1670295764,
      "iat": 1670293964,
      "nonce": "IZ32TJmuMGF1iisd8t7VGGSF2DkT5PY1FmVwpbT85Uw"
    }
    
  3. IAM認証状態で kubeconfigで oidc認証ユーザー用のクラスタロールを追加します。
  • Ncloud Kubernetes Service OIDC設定で username prefix/claimを設定しないと基本的に#が usernameとして設定されます。
  • usernameを変更するには4番の OIDC設定で prefix/claimが指定できます。
    kubectl create clusterrolebinding oidc-cluster-admin --clusterrole=cluster-admin --user='https://sso.ncloud.com/tenants/f42162be-f574-477f-985b-c624579f2b08#bcf8067c-da7e-4818-ae58-39add6bd7e6a'
    
  1. コンソールで Ncloud Kubernetes Service OpenID Connect(OIDC)認証設定を行います。
    • Issuer URL: https://sso.ncloud.com/tenants/f42162be-f574-477f-985b-c624579f2b08
    • Client ID: bf24746a-1957-4d45-8ad6-da86029296b2
  2. kubeconfigファイルに oidc認証を追加します。
    kubectl config set-credentials oidc \
      --exec-api-version=client.authentication.k8s.io/v1 \
      --exec-command=kubectl \
      --exec-arg=oidc-login \
      --exec-arg=get-token \
      --exec-arg=--oidc-issuer-url=https://sso.ncloud.com/tenants/f42162be-f574-477f-985b-c624579f2b08 \
      --exec-arg=--oidc-client-id=bf24746a-1957-4d45-8ad6-da86029296b2 \
      --exec-arg=--oidc-client-secret=22202039-c06d-4ad0-95d0-fb537378cc20 \
      --exec-arg=--oidc-extra-scope=groups
    
  3. Oidc認証を使用して kubectlコマンドを実行します。
    kubectl --user=oidc get nodes
    
  4. 現在の kubeconfig contextが oidc認証を使用するように設定します。
    kubectl config set-context --current --user=oidc