サービス アカウント キーのローテーション

このページでは、Anthos clusters on VMware(GKE On-Prem)で Cloud Audit Logs、使用状況測定、Stackdriver コンポーネントの gkectl を使用して、サービス アカウントキーをローテーションする方法について説明します。

サービス アカウント キーをローテーションするには:

  1. 現在のシークレットのバックアップを保存するディレクトリを作成します。

    mkdir backup
  2. 関連するコンポーネントについては、次の点にご注意ください。

    Cloud Audit Logs

    クラスタ シークレット 名前空間
    管理 admin-cluster-creds kube-system
    管理 ユーザー クラスタ証明書 CLUSTER_NAME-gke-onprem-mgmt
    管理 kube-apiserver CLUSTER_NAME

    使用状況測定

    クラスタ シークレット 名前空間
    管理 ユーザー クラスタ証明書 CLUSTER_NAME-gke-onprem-mgmt
    ユーザー usage-metering-bigquery-service-account-key kube-system

    Stackdriver

    クラスタ シークレット 名前空間
    管理 admin-cluster-creds kube-system
    管理 ユーザー クラスタ証明書 CLUSTER_NAME-gke-onprem-mgmt
    ユーザー google-cloud-credentials kube-system
    ユーザー stackdriver-service-account-key knative-serving
  3. 次のコマンドを使用して、各シークレットのバックアップを作成します。

    kubectl get secret SECRET --namespace NAMESPACE \
        --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json

    次のように置き換えます。

    • NAMESPACE は、シークレットが配置されている名前空間です。例: kube-system
    • KUBECONFIG: 管理クラスタまたはユーザー クラスタの kubeconfig ファイルへのパス。
    • SECRET: Secret の名前例: admin-cluster-creds

    たとえば、Cloud Audit Logs コンポーネントに対して次のコマンドを実行します。

    kubectl get secret admin-cluster-creds --namespace kube-system \
            --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json
    
    kubectl get secret user-cluster-creds --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json
    
    kubectl get secret kube-apiserver --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
  4. 新しいサービス アカウント キー ファイルを作成するには、次のコマンドを実行します。

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    次のように置き換えます。

    • NEW_KEY_FILE: 新しいサービス アカウント キー ファイルの名前
    • IAM_ACCOUNT: Cloud Audit Logs使用状況測定、Stackdriver のいずれかのサービス アカウントのメールアドレスです。
  5. 管理クラスタとユーザー クラスタの両方の対応する構成ファイルで、cloudauditloggingusagemetering、または stackdriver セクションを見つけます。

  6. serviceAccountKeyPath フィールドを、先ほど作成した NEW_KEY_FILE に置き換えます。

  7. 次のコマンドを使用して、変更を保存します。

    gkectl update credentials COMPONENT --admin-cluster --kubeconfig \
      ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
    
    gkectl update credentials COMPONENT --kubeconfig \
       ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

    次のように置き換えます。

    • COMPONENT: cloudauditloggingusagemetering、またはstackdriverのいずれかです。
    • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルへのパス。
    • ADMIN_CLUSTER_CONFIG: 管理クラスタの 構成ファイルへのパス。
    • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルへのパス。