サービスアカウントトークン
サービスアカウントトークン とは何ですか?
サービスアカウントトークンKubernetes Pod にマウントされる JWT 形式の認証情報。API サーバや、クラスタの ID プロバイダを信頼する外部サービスに対してワークロードを認証する。
Kubernetes の ServiceAccount は、Pod が使う人間以外のアイデンティティを表します。関連付くトークンは署名済みの JWT で、近年のバージョンでは TokenRequest API により Pod 内の /var/run/secrets/kubernetes.io/serviceaccount/token に自動投影され、API サーバへの呼び出しに用いられます。クレームには audience、有効期限、Namespace、Pod 名などが含まれます。トークンは RBAC を介してアクセス権を付与するため、漏洩は深刻です。攻撃者は窃取したトークンで RoleBinding の範囲内のリソースを参照・変更・削除できてしまいます。ベストプラクティスは、audience 付きで寿命が短い bound トークンを使い、必要のない自動マウントを止め、最小権限の RoleBinding を維持し、OIDC、Workload Identity、IRSA などでクラウド IAM とフェデレーションすることです。
● 例
- 01
Pod が audience "sts.amazonaws.com" の投影トークンを使い、IRSA 経由で AWS IAM ロールを引き受ける。
- 02
コンテナエスケープに成功した攻撃者が SA トークンを読み取り、Kubernetes API に侵入する。
● よくある質問
サービスアカウントトークン とは何ですか?
Kubernetes Pod にマウントされる JWT 形式の認証情報。API サーバや、クラスタの ID プロバイダを信頼する外部サービスに対してワークロードを認証する。 サイバーセキュリティの クラウドセキュリティ カテゴリに属します。
サービスアカウントトークン とはどういう意味ですか?
Kubernetes Pod にマウントされる JWT 形式の認証情報。API サーバや、クラスタの ID プロバイダを信頼する外部サービスに対してワークロードを認証する。
サービスアカウントトークン はどのように機能しますか?
Kubernetes の ServiceAccount は、Pod が使う人間以外のアイデンティティを表します。関連付くトークンは署名済みの JWT で、近年のバージョンでは TokenRequest API により Pod 内の /var/run/secrets/kubernetes.io/serviceaccount/token に自動投影され、API サーバへの呼び出しに用いられます。クレームには audience、有効期限、Namespace、Pod 名などが含まれます。トークンは RBAC を介してアクセス権を付与するため、漏洩は深刻です。攻撃者は窃取したトークンで RoleBinding の範囲内のリソースを参照・変更・削除できてしまいます。ベストプラクティスは、audience 付きで寿命が短い bound トークンを使い、必要のない自動マウントを止め、最小権限の RoleBinding を維持し、OIDC、Workload Identity、IRSA などでクラウド IAM とフェデレーションすることです。
サービスアカウントトークン からどのように防御しますか?
サービスアカウントトークン に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
サービスアカウントトークン の別名は何ですか?
一般的な別名: ServiceAccount トークン, Projected SA トークン。
● 関連用語
- cloud-security№ 600
Kubernetes セキュリティ
Kubernetes クラスター(API サーバー、コントロールプレーン、ノード、ワークロード、ネットワーク)を構成ミス・侵害・横移動から守ること。
- cloud-security№ 596
kube-bench
Aqua Security が公開する OSS ツールで、Kubernetes クラスタの構成を CIS Kubernetes Benchmark に対して自動的にチェックする。
- cloud-security№ 601
Kubescape
ARMO 製の OSS Kubernetes セキュリティプラットフォーム。クラスタ、マニフェスト、コンテナイメージを対象に、設定ミス・脆弱性・ポリシー逸脱をスキャンする。
- cloud-security№ 1248
ワークロード ID
サービス・コンテナ・関数に割り当てられる暗号的 ID で、長期間の共有シークレットなしに他システムへ認証するために使われる。