サービスアカウント【service account】
概要

サービスアカウントは、あるサービスがバックグラウンドで自動的に別のサービスへアクセスし続ける場面で用いられる。夜間に自動実行されるバッチ処理がデータベースからデータを取得する場合や、Webアプリケーションがクラウドストレージへファイルを書き込む場合などがその例である。このような処理では、人間が立ち会ってその都度ログインして認証することが現実的でないため、あらかじめ用意されたサービスアカウントの認証情報が使われる。
人間のユーザー認証ではパスワード入力が一般的だが、サービスの認証ではAPIキーや秘密鍵、アクセストークン、デジタル証明書といった手段がよく用いられる。実行環境に統合された認証情報を利用する形態もあり、アプリケーションのコード内に認証情報を直接埋め込む必要がない。パスワードを用いる場合もあり、安全のために定期的な入れ替え(ローテーション)が行われることが多い。
権限の管理においては、そのサービスが必要とする最小限の権限だけを付与する運用が基本とされる。不必要に広い権限を持たせると、アカウントが悪用された際の被害が拡大するためである。サービスアカウントへのアクセスログの監査も運用上の重要事項であり、権限の誤付与や認証情報の漏洩が生じていないかを継続的に確認することが求められる。
クラウド環境ではサービスアカウントの概念が広く普及している。Amazon Web Services(AWS)やMicrosoft Azure、Google Cloudなどのクラウドプラットフォームでは、仮想マシンやコンテナに対してサービスアカウントを関連付けることで、各リソースがクラウド上のサービスへアクセスする際の権限を制御できる。利用形態としてはバッチ処理やバックグラウンドジョブのほか、CI/CDパイプライン、マイクロサービス間の通信などがある。
サービスアカウントが普及した背景には、システムの自動化の進展がある。初期のマルチユーザー環境では自動実行されるプログラムに管理者アカウントを紐づけて強力な権限で動作させる例が多かったが、セキュリティについての考え方の発展やシステムの複雑化に伴い、人間用とシステム用の権限を厳密に分離する設計が一般化した。