サーバーのroot権限を他人に渡すということは、自宅の金庫のパスワードと鍵を一緒に他人に渡すようなものです。
root
はシステム内で最高の権限を持つ神のような存在です。「創造主」とも言えます。これを持つということは、サーバーに対してどんなことでも、何の制限もなく行えることを意味します。
具体的に言うと、root権限を持った人は以下のことができます。
- すべてを閲覧する:あなたのサーバー上のすべてのファイル、コード、顧客データ、契約書、財務情報など、保存されているものなら何でも閲覧し、コピーして持ち出すことができます。
- すべてを改ざんする:ウェブサイトのコードを改ざんしたり、決済用のQRコードをすり替えたり、さらには密かにコアデータを削除したりすることも可能です。
- すべてを削除する:
rm -rf /
(非常に危険なコマンド)の一言で、システム全体が消滅します。データベースを削除して逃走することも、技術的には可能です。 - あなたを締め出す:あなたのパスワードを変更し、二度とサーバーにログインできないようにすることもできます。つまり、そのサーバーは彼のものになってしまうのです。
- 痕跡を残さずに好き放題する:熟練した者がroot権限を手に入れれば、システムログを改ざんし、自身の痕跡をすべて消し去ることができます。何が行われたのか、あなたは何も追跡できません。
スタートアップ企業では、信頼、アジリティ、迅速なイテレーションが重視されることは承知しています。時には手軽さを求めて、技術責任者やコアエンジニアにrootパスワードを直接渡し、すぐに作業を終わらせてもらうことがあります。このような状況は非常によく見られます。
しかし、これは大きな潜在的リスクです。エンジニアの人間性を信頼していないわけではなく、これはプロセスとセキュリティ管理の問題なのです。
では、正しいやり方は何でしょうか?
あなたは**「最小権限の原則」**というものを遵守すべきです。簡単に言えば、「必要な権限だけを与え、それ以上は与えない」ということです。
具体的には、次のようにできます。
- 一般アカウントを与える:まず、そのエンジニアのために彼自身の個人アカウントを作成します。
sudo
で権限を付与する:sudo
は非常に便利なツールです。これを「一時的な権限付与」のツールと理解してください。sudo
を使って、彼が業務範囲内でroot権限を必要とする作業のみを行えるように、正確に設定することができます。例えば、ウェブサービスを再起動したり、ソフトウェアをインストールしたりする権限は与えられますが、データベースファイルを操作したり、ユーザーパスワードを変更したりすることはできません。- 操作監査を徹底する:
sudo
を使用する大きな利点の一つは、彼が行った特権を必要とするすべての操作が記録されることです。誰が、いつ、sudo
を使ってどのようなコマンドを実行したのかが、明確に分かります。これは監視であると同時に保護でもあります。万が一サーバーに問題が発生した場合、誰のどのような操作が原因であったかを迅速に追跡でき、お互いに疑心暗鬼になったり、責任のなすりつけ合いになったりするのを防ぎます。
まとめると:
原則として、rootアカウントとパスワードを直接共有することは絶対に避けてください。
仲間を信頼することは大切ですが、権限管理にはプロフェッショナルなツールとプロセスを用いるべきです。これは人間性の問題ではなく、会社が正規化する上で避けて通れない道です。会社のコア資産を保護するだけでなく、エンジニアも保護します(万が一問題が発生した場合、ログが彼の潔白を証明し、濡れ衣を着せられるのを防ぎます)。
もし相手がどうしてもroot権限が必要だと主張するなら、座ってじっくり話し合う必要があります。彼に何がしたいのか、なぜ既存の権限やsudo
では不十分なのかを明確に説明してもらいましょう。もし理由が不十分であれば、あなたは再考する必要があるでしょう。