web-dev-qa-db-ja.com

「神」のパスワードを持つのは悪い習慣ですか?

サポート目的でWebサイトの任意のユーザーアカウントにアクセスできるパスワードを設定することは、セキュリティの習慣として不適切ですか?パスワードは安全な方法で保存され、非常に複雑になります。重大な失敗?

66
Abe Miessler

これは、「管理者」アカウントに非常によく似ています。通常、それ以外の場合は、管理者であるものに無制限にアクセスできます。

管理者アカウントのセキュリティへの影響は、ベストプラクティスと同様に、かなりよく理解されています。詳細については説明しませんが、トレーサビリティという1つの重要な機能のベストプラクティスで実装がうまくいきません。

管理者に関しては、だれが何をしたかがわかるようにしたい特に。管理者が自分のパスワードを使用して自分のアカウントにログインできる場合、事後の監査人が管理者が行ったことと自分が行ったことを判断する方法はありません。

しかし、代わりに管理者がスーパーセキュアパスワードを使用してOWNアカウントにログインすると、自分のアカウントを介したアクセスを通じて、私が実行できたいくつかのアクションが実行されます-これで、誰が実行したかをログに記録できます何。これは、肥料が扇風機に当たったときにかなり重要です。さらに、管理アカウントの1つが危険にさらされた場合(最善の努力にもかかわらず、それはになります)。

また、ビジネスが成長し、2人の管理者が必要だとします。彼らは素晴らしいパスワードを共有していますか?ダメダメダメ。どちらも独自の管理者アカウントを取得し、個別のトレースとロギングなどを行います。これで、管理者が何をしたかを確認できます。そして最も重要なのは、ドーナツを盗んだために管理者の1人を解雇したときに、アカウントの1つを閉じることができることです。

117
tylerl

これまでに出された回答には、元のポスターを読んで心に留めるべき多くの優れた情報があります。しかし、サポートの目的で会社のWebサイトを「ユーザーのように」たどることに関連しているため、ほとんどの回答は質問の精神を捉えていないと思います。問題の核心は、このアクティビティがサーバーのコンソールではなくWebサイトのフロントエンドで発生することです。

Webアプリケーションでこれと同じニーズを抱えており、元のポスターが求めていた種類のソリューションであると私が確信している方法ですでに解決している会社を知っています。

彼らは、特別なグループの従業員がシステム内の任意のユーザーを検索し、システムを参照する資格情報としてそのユーザーを選択できる一連のページに入ることができる「マスカレード」システムをWebアプリケーションに作成しました。これは、偽装するように選択されたユーザーと、実際の従業員ユーザーを、常にすべてのアクションで記録される2つの別個の同時エンティティとして追跡します。

アプリケーションの観点からは、「私をこのユーザーとして扱いますが、私は実際にはこの別のユーザーであることを忘れないでください」です。 SudoのWebアプリケーションバージョンのようなものですが、フロントエンドに組み込まれています。

この方法:

  1. 両方のユーザーアカウントが常に追跡されるため、監査証跡の悪夢を排除します。
  2. 従業員にページの正確な「ユーザービュー」を提供します。
  3. 共有または「マスター」パスワードがないように、従業員の個々の資格情報を維持します。
  4. 従業員がパスワードを使用できないユーザーのセキュリティを維持します。
  5. ソリューションをWebサイトのアプリケーションレイヤーに保持し、システムレベルのアクセスや知識がなくても誰でもソリューションを実行できるようにします。
  6. 従業員はいつでも「マスカレードを解除」して、自分のアカウントまたは他のユーザーアカウントに対してページのコンテンツを確認できます。これは、バグがグローバルなものかユーザー固有のものかを判断するのに非常に役立ちます。
51
Daniel Nalbach

はい、それは間違いです。あなたがそれがどれほど安全であると思っていても、攻撃者がこのパスワードを手に入れることができた場合はどうなりますか?彼は、通常のアクティビティと区別するのが最も難しい方法で、ユーザーアカウント情報を改ざんすることができます。

Webサイトを管理している場合は、サポートオプションとしてさまざまな方法を利用できます。適切な管理ツールを作成して、必要な情報を読み取り、変更することができます。 「マスター」パスワードを設定しても意味がありません。

11
user10211

この「神」のパスワードは、root/Administratorアクセス​​に相当します。すべてを実行できます。問題は2つあります。

  1. 「すべてを行うことができる」種類のアクセスがあるのは良い考えですか?実際には、「良い」というよりは「避けられない」ものですが、はい、それは普通のことです。ただし、適切な使用手順があることを確認してください。管理者がコーヒーショップの共有マシンから管理を行うことは望ましくありません。そして、あなたは「だれをだめ」を知りたいです。その意味で、管理者権限を与えられた個人が2人以上いる場合、管理者のメンバーとして「そのまま」行動するのが最善ですgroup(UNIXの世界では、Sudo(コマンドがログに記録されるようにします)。

  2. 管理者に権限を行使させることは良い考えですか通常のユーザーAPIを介して?これは議論の余地があります。 「神のパスワード」を許可することは、「神の例外」をアプリケーション全体にインストールすることを意味し、悪用されるリスクがあります。これにより、サイト内の認証+承認システムの複雑さが増します。複雑さは、セキュリティで回避したい1つのことです。バグは複雑さを増します。 「神のパスワード」は開発中に便利ですが、一般的に言えば、壊滅的なセキュリティホールの可能性を高める傾向があるため、細心の注意を払って使用してください。

もちろんcontextがすべてであり、上記の答えは単に通常が適用されます。それでも、管理上のバックドア、特に管理要求の発信元を十分に追跡できないバックドアには注意してください。

7
Tom Leek

管理者は引き続き自分自身としてしか機能できません。godパスワードを持つユーザーは、システム上の誰にでもなりすますことができます。管理者が十分な権限を持っている場合、攻撃者がそのアカウントで実行できる実際の被害を制限するためにこれはあまり効果がないと主張することができます。しかし、godパスワードを持つ攻撃者は、自分の痕跡を隠すのがずっと簡単になります。

4
The Spooniest

「神」のパスワードを持つことは簡単な解決策ですが、マスターパスワードを知るための単なる「許可」であり、適切なアクセス管理(つまり、誰が実行できるかを制御する)や、説明責任(実際には何をしたか)。

代わりに、有効なユーザーフィールドを持つように資格情報データ構造を変更します。

{
  user: alice,
  effective_user: bob,
}

だれが本当に閲覧しているかを知る必要がある内部管理ページでない限り、effective_user用にWebページのコンテンツをレンダリングする必要があります。あなたのサイトを閲覧するほとんどの外部の人々は常に両方のフィールドに同じIDを持っていることに注意してください:

{
  user: alice,
  effective_user: alice,
}

この配置により、別のユーザーになることを許可されているユーザーをより適切に制御でき、誰のために誰が何をしたかを記録/監査することもできます。 (監視する対象にuserとeffective_userの両方を簡単に記録できます。)プロセスを定義するもののソースを見ると、Unixはこの効果的なユーザー(およびグループ)を内部的に処理します。これをウェブ上で模倣することは、既知の成功したパラダイムを利用しています。

このソリューションでは、スタッフが別のユーザーの「肩越しに見渡す」ことができるページを選択することもできます。 effective_userに基づいてレンダリングしないページを作成することを選択できます。その場合、有効なユーザーIDを変更する権限があっても、そのページはどれもスタッフに表示されません。

ところで、私は効果的なユーザーの概念をWebに実装し、god-passwordも実装しました。後者は、すべてのインフラストラクチャがすでに配置されている場合に簡単にドロップインできます。しかし、だれが何をしたのかを知り、アクセスを管理するという点では、それは本当に最良の解決策ではありません。効果的なユーザーフィールドを追加するために実際にどのくらいのリファクタリングが必要かをよく見てください。思ったより少ないかもしれません。

4
broc.seib

ユーザーになりすますことはありません。 (他の人がすでに述べたように、追跡可能性/説明責任のさまざまな理由のため。)
代わりに、肩越しに後ろを向いて立っているかのようにユーザー画面のコピーを表示します。
これが、VNC、TeamViewer、リモートアシスタンスなどの画面/デスクトップ共有ツールの目的です。

3
Tonny

1人のユーザーだけがアクセスできる場合、それは必ずしも問題ではありませんが、このアクセスを許可するユーザーアカウントの設定があれば、同じように簡単に行うことができます。

Root/superuser/adminの種類の機能では、動作のロギングと監査が重要です。つまり、誰が何をしていたかを知る必要があります。複数のユーザーがこのような変更を行えるようにする必要がある場合は、それを許可するためのアカウントのフラグにする必要があります。

アクセス権がある場合でも入力する必要がある、より複雑なパスワードを追加することもできますが、このようなことを行う前に、変更を加える個人の安全な認証を要求する必要があります。

1
AJ Henderson

「神」モードの機能を持つ1つのアカウントではなく、ロールベースのセキュリティが必要だと思います。このようにして、同じ役割を持ち、同じ機能を持つ複数のユーザーがいることができるので、あなたの神/管理者が利用できない場合、他の誰かが修正を行うことができます。

監査を受ける場合は、これが特に好ましいことを知っています。

0
James

選択肢はないかもしれませんが、「神」のパスワードを持っている必要があります。 tylerlが2つの異なる管理者パスワードを持っていることについて何を言ったかに関係なく、誰かがそれを担当していない限り、どのようにしてログとトレースを保持することさえ可能でしょうか?あなたは文字通りログを暗号化しなければなりません、そしてそれは外の世界にのみ読まれるように自分自身に対してすべてを暗号化しなければなりませんが、それでも自分自身のために書くことができます。受け取った情報が正当なものであるかどうかをどのように判断しますか?当然、アクセス権がない場合、誰もアクセスできません。これも機能しません。

0
Timothy Swan