ユーザーアカウントとサービスアカウントの違いは何ですか?


15

ユーザーアカウントとサービスアカウントの違いを知りたい。

たとえばJenkins、ubuntuにインストールされているのはユーザーではなく、サービスアカウントです。

  1. サービスアカウントの使用とは何ですか?
  2. それらが必要なときは?
  3. サービスアカウントを作成するにはどうすればよいですか?

回答:


17

ユーザーアカウントは実際のユーザーによって使用され、サービスアカウントはWebサーバー、メールトランスポートエージェント、データベースなどのシステムサービスによって使用されます。 。UID 0を除き、サービスアカウントには特別な特権はありません。サービスアカウントは、特定のリソースを所有する場合があり、通常は所有しますが、デバイススペシャルファイルも所有できますが、スーパーユーザーのような権限はありません。

サービスアカウントは、通常のユーザーアカウントと同様に作成できます(例:を使用useradd)。ただし、サービスアカウントは通常、サービスソフトウェアのインストール時にパッケージマネージャーによって作成および構成されます。そのため、管理者であっても、サービスアカウントの作成に直接関係することはほとんどありません。

正当な理由:ユーザーアカウントとは対照的に、サービスアカウントには多くの場合、「適切な」ログインシェルがありません。つまり、/usr/sbin/nologinログインシェルとして使用されます(または、昔のように/bin/false)。さらに、サービスアカウントは通常ロックされています。つまり、ログインすることはできません(従来の方法/etc/passwd/etc/shadowは、パスワードハッシュを*やなどの任意の値に設定することで実現できますx)。これは、悪用に対するサービスアカウントを強化することです(多層防御)。

各サービスに個別のサービスアカウントを持つことは、主に2つの目的に役立ちます。1つのサービスでのインシデント(コンパートメント化)の影響を軽減するセキュリティ対策であり、どのリソースがどのサービスに属しているかを追跡しやすくなるため、管理が簡素化されます。参照してください。このまたはこれ以上の詳細については、関連の質問に答えを。


4

もともと、ユーザーはシステムを使用している人間に対応することを目的としていたため、名前が付けられました。各プロセスは特定のユーザーとして実行され、各ファイルは特定のユーザーによって所有されます。rootと呼ばれる特別なユーザーは、特定の人間のユーザー、つまりオペレーティングシステム自体に属さないものに使用されます。ルートはオペレーティングシステム自体に対応しているため、すべての権限があります。

すぐに人々は、広範な権限なしで複数のシステムユーザーを作成することが便利であることに気付きました。これにより、マシン上で実行されるさまざまなサービスを分離できるので、お互いの足指を踏む必要がありません。サービスアカウント(または「システムアカウント」、これら2つの用語は同義語)は、システムを使用している人ではなく、システムで実行されているサービスに対応するものです。通常、独自の特権セット(独自のファイル、独自のネットワークポートなど)を持つシステムで実行されている各タスクのサービスアカウントがあります。

人間とシステム/サービスアカウントの正式な定義はありません。カーネルは気にしません(UID 0を持つユーザーに多くの特権を付与する以外は)。ほとんどの管理コマンドも気にしません。典型的な違いは次のとおりです。

  • 人間のユーザーには「John Doe」のような本名がありますが、システムのユーザーには「Nasal daemon」のような説明的な名前があるか、まったくありません。
  • 人間のユーザは、例えば(実際のログインシェルを持っている/bin/shか、/bin/bashまたは/bin/csh一部のシステム・ユーザーは、(ほとんど常にシェルを持っている/bin/shなど(それらが使用されることを意図されている方法に応じて、他の人にはない、)su fooが必要ですfoo)シェルを持っています。
  • 多くの場合、人間のユーザーはパスワードを持っていますが、常にそうであるとは限りません。たとえば、リモートのみのユーザーはSSHキーしか持っていない場合があります。現代の大学では、パスワードはにではなく、/etc/passwdなどの他のファイルにあることに注意してください/etc/shadow
  • 通常、人間のユーザーのホームディレクトリは/home(またはサイト固有の場所)の下に/homeありますが、システムユーザーのホームディレクトリは通常下になく、存在しない可能性があります(ただし、例外があります)。
  • ほとんどのサイトでは、システムユーザーにはさまざまなユーザーIDを指定し、人間のユーザーにはばらばらの範囲を指定しています。100–65533または500–65533または1000–65533の予約が一般的であり、ほとんどのディストリビューションは、500または1000から実際のユーザーIDの割り当てを開始するように設定されています。

アカウントが複数のマシン間で共有されるサイトでは、通常、NISまたはLDAPを介してアクセス可能なユーザーリストを含む中央サーバーがあります。のpasswdエントリは、/etc/nsswitch.confユーザー情報の検索場所を指定します。/etc/passwdネットワーク全体のデータベースのローカルユーザーと実際のユーザーにシステムユーザーがいるのが一般的ですが、ネットワーク全体のデータベースにシステムユーザーが存在することもあります(サーバーとデータの複製を容易にする一貫したUIDを強制するため)。ローカルファイル内の人間のユーザー(ネットワークがホース接続されている場合でもログインできるようにするため)。

システムユーザーを装った人間がアクセス可能なアカウントは、通常、本名ではなく、ログインシェル、パスワードセットまたはSSHキーを持ち、システム範囲内のユーザーIDを持ちます。実際、削除すると一部のサービスが動作しなくなる実際のシステムアカウントを使用する方が良いでしょう。ただし、潜在的な攻撃を検出するための厳格なルールはありません。定義により、攻撃者はルールに従いません。

サービスアカウントとヒューマンアカウントは同じコマンドで管理され、同じファイルに記録されます。アカウント作成コマンドには、適切な範囲のユーザーIDを選択したり、人間のパスワードを求めたり、サービスのパスワード認証を無効にしたりするなど、人間とサービスのユーザーに適切なデフォルトを設定するオプションがあります。たとえば、adduservs adduser --systemまたはuseraddvs useradd -ron Linux。


3
    1. サービスアカウント、別名テクニカルアカウントは、通常のユーザーではなく、サービス/アプリケーションのみが使用するように設計されたアカウントです。
    1. アプリケーションおよびサービスの開発者は、これらのアカウントがプロセスをルートとして実行するのではなく、関連するプロセスの権利と特権を制限することを望んでいます。によって開始されたサービスinitsystemdまたは同様のサービスは、rootとして実行され、サービスアカウントにすばやくダウングレードしてリスクを制限します。使用するOSによっては、アプリケーションアカウントに通常のアカウントよりも多くの特権が与えられる場合があります。たとえば、特権TCPポートにバインドする権利、または反対に、サービスプロセスを拒否するなど、通常のユーザーと比較して特権を減らす場合fork/を呼び出しますexec。そのような場合、サービスをサービスアカウントにダウングレードする必要はなく、それを使用して開始できます。
    1. 使用する必要はありませんが、使用可能なパスワードと動作しないシェル(例/bin/false)を持たないアカウントを作成するだけで、通常のユーザーは使用できません。つまり、ローカルまたはリモートでログインする方法はありません(例thru ssh)アカウント名を使用します。ほとんどの制限と同様に、rootアカウントを使用するかsudo、それを克服できます。

1

たとえば、サービスアカウントにはシェルを使用する機能がない場合があります。制限されたスコープと特権でサービス(デーモン)を実行するために使用されます。私の意見では、権利とグループメンバーシップに注意するだけで、通常のユーザーとして作成できると考えています。ただし、ほとんどの場合、インストール中にプログラムが自動的に作成するため、そうしません。見てみましょう/etc/passwd root:x:0:0:root:/root:/bin/bash

0はUIDであり、ユーザー空間のアカウントの階層を特徴づけます。ルートはすべてのユーザーより上にあり、グループメンバーシップ:rootはホームディレクトリ、/root最終的にはアカウント/bin/bashがシステムに「ログイン」するために使用するシェルです。

/usr/sbin/nologinログイン特権が不要なアカウントに使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.