開発者はコンピューターの管理者である必要がありますか?[閉まっている]


35

企業環境では、開発者はコンピューターの管理者権限を持っている必要がありますか?どうして?

技術的環境:

  • Windows 7
  • Visual Studio 2008および2010
  • SQLサーバー



2
また、以下を参照してください:Programmers.stackexchange.com/questions/4596/…–
goodguys_activate

3
質問の多少主観的な性質にもかかわらず、これはほぼすべてのWindows管理者(他のプラットフォームについてはコメントできません)が彼/彼女のキャリアの間に直面するので、私はこれを再開することに投票しています。これまでに投稿された回答は、この問題に直面したときに他の人に役立つと思われる情報を提供します。
ジョンガーデニアス

2
これを再開するために投票できれば、私はそうするでしょう。
jmort253

回答:


52

彼らはすべきですか?それは企業次第です。個人的には、いくつかのルールが理解されていれば問題ないと思います。

  1. ボックスの管理者になることは権利ではなく特権です。
    1. 複数の機会にウイルスをキャッチすると、適切に取り消されます
    2. 企業エージェントを無効にすると、権利が取り消されます-AV /インベントリ/ソフトウェア展開/など
    3. 基本的に、ネットワークを危険にさらすような行為を行うと、権利が取り消されます
  2. インストールするツールは、公式に承認されたリストに載らない限り、プロジェクトの依存関係にしないでください。デプロイの日にクラッシュしないようにきちんと確認し、テストなしですべてのサーバーに$ random_libraryをインストールするよう要求します
  3. 他の場所にインストールされている通常のアプリケーション以外の場合は、サポートが最善を尽くします。ヘルプデスクやシステム管理者は、dllの競合の原因をデバッグしようとして5時間を費やすことはありません。

18
良いリスト。また、製品が最終的に管理者権限のないユーザーによって実行される場合は、それに応じてテストする必要があることも追加します(実際のユーザビリティテスト)。開発者が多すぎると、貧乏人のテストを行い、神の権利を持っている開発マシンでテストします。この製品は正常に機能し、非特権環境で製品が窒息することを知るためだけに承認の印を付けます。
ショーンアンダーソン

4
@Shawn、テスターだけでなく開発者も必要な理由があります。
イアンリングローズ

11
これは、開発者が管理者特権を必要とする理由を理解していない典型的なネットワーク管理者の返信です。これは、過去に管理者または開発者であったマネージャーレベルの人が決定する必要があります。それ以外の場合は、マシンをウイルスから解放し、オフィスを開発者から解放します。
ムハンマドハサンカーン

11
@Hasanと、これは典型的な開発者の返信です。DS3が飽和状態になり、オフィス全体がトラフィックでいっぱいになっているネットワークに対処する必要はありませんでした。ここで面倒なことを何でもするようにお願いしているわけではありません。
ザイファー

9
開発ハウスでは、開発チームが急いでいるソフトウェアのためにビジネスをしています。私はいくつかのビジネスで働いていましたが、そこではマシンが仕事を不可能にするほどロックされていて、開発ツールを実行するために管理者権限が必要な人を納得させるのに苦労しました。または、インターネットアクセスが切断されたため、オンラインドキュメントを読むことさえできませんでした。または、すべてのデータベースレコードの挿入をスキャンするため、パフォーマンスが大幅に低下するため、開発者がソフトウェアを適切に実行することが不可能なウイルス対策製品。
マット

35

通常、私はイエスと言います。デバッガーのようなものは、正しく動作するために管理者でない場合はかなり高い権限を必要とします。開発者は多くの場合、ランダムなソフトウェアをインストールする必要があります。これは、チャネルを通過するときに数日または数週間かかる場合があります。その期間中、特に開発者がコンサルタントである場合、開発者の仕事は通常、会社に金以外の費用はかかりません。


13
+1-開発者は(通常)かなり頭がよく、マシンをクリーンに保ちます
マークヘンダーソン

9
言わないで。:)
mrdenny

4
@Mark、その主張を裏付ける証拠はまだ見ていません。
ジョンガーデニアス

4
@マーク・ヘンダーソン、あなたは幸運にも実際に良い人々のグループと仕事をすることができます。私が毎日読んでいるサイトが、すべての開発者が平等に作られているわけではないという印象を与えている場合。
ゾレダチェ

8
「ドライバーを運ぶプログラマーに注意してください」という古いクリンゴン語のbelieveがあると思います。
バートシルバース

23

開発には科学と芸術の両方があります。必要なものを「知る」ほど簡単ではありません。すでに答えがあった場合、仕事の半分は意味がありません。正しいアプローチを見つけることは多くの場合反復的であり、予測不可能な方法で複数のツールを使用する場合があります。これらのそれぞれをインストールする(多くの場合、待ち時間が長い)ことを仲介者に要求し、シナリオで「スーパーユーバーツールアドオン」が必要であることを見つける(約1時間)のは愚かです。

VMはこれに理想的ですが、VMで(適切に、またはまったく)実行できない開発ツールもたくさんあります。それら自体がVMであり、JVMのようなものを意味するものではありません。デバイスツールキットなどのフルマシンemus / vmsを意味します。互換性が向上しています。

さらに、ほとんどの開発ツールのフットプリントは非常に大きく、「通常の」ツールよりもはるかに大きく(VMのホスティングが予想以上に苦痛になります)、多くの場合、プロセスデバッガーの性質上、高いアクセスが必要です。GUI集約型である可能性があるという事実は言うまでもありません。VM GUIでフルタイムで実行しようとすると、非常に痛みを伴います。

パフォーマンスがある巨大なはここにあります。Wordでキーを押すたびにキーが登録されるのを3秒待っても問題ないと思いますか?私は冗談ではありません-VMなどの開発ツールはこんなに嫌なこともあります。ほとんどの開発目的には、応答性が必要です。脳からキーボードへの複雑なロジックの流れを中断すると、仕事を成し遂げることがほとんど不可能になります。そして、私はそれを言うことを嫌いますが、はい:開発時間は高価です。


18

Windows環境では、特にMicrosoft開発者製品を使用する場合、開発者はマシンの管理者権限を必要とします。あなたがそれらの権利を拒否すると、彼らの仕事をする能力は完全に妨げられない限り制限されます。


1
多分。ただし、ユーザーが使用する製品を作成している場合は、非特権環境でコードをテストする必要があります。
バートシルバース

2
@Bart、私は完全に同意しますが、開発ツールは「通常の」コンピューターとはまったく異なる環境を作成するため、とにかく別のマシンでテストを行う必要があります。
ジョンガーデニアーズ

@BartSilverstrim常にフォローするとは限りません。アプリケーションのユーザー部分が通常のユーザーとして実行されるからといって、すべてのコンポーネントが実行されるわけではありません(たとえば、サービスクライアントを考慮すると、サーバーはより高い特権を必要とする可能性があります)。そして、インストーラーを検討
リチャード

1
@Richardもその通りですが、Bartのポイントは、顧客が使用する環境に可能な限り近い環境でテストを行う必要があるということです。
ジョンガーデニアス

1
システムタスクに関連しないソフトウェアの問題に対する正解は、「管理者として実行」されることはほとんどありません。
バートシルバース

9

開発者である私は、基本ユーザーよりもシステム管理者よりも低いレベルの特権をランク付けしています。

開発環境で動作するように開発中のアプリケーションを取得するために、追加のライブラリをインストールする必要がある場合があります。つまり、「サードパーティライブラリを必要とするアプリケーションでは、ライブラリは、運用展開の前に、場合によってはアプリケーション開発の前に、サンドボックス環境にインストールする必要があります。」

一緒に作業しているシステム管理者はこれに同意します。2人の間で、このルールを積極的に実施し、「依存性チェック」に合格しなかったアプリケーションの展開を遅らせます。

ただし、あなたの質問に答えるには、はい、開発者は自分のマシンへのフルアクセスを許可する必要がありますが、それらのマシンは、アプリケーションが最終的にデプロイされる環境から隔離する必要があります。この場合、実稼働環境での展開が安全であると判断されるまで、アプリケーションの展開もサンドボックス化する必要があります。


9

免責事項:私は開発者です。

私には、この質問(および回答)が間違ったアプローチから問題を攻撃しているようです。つまり、議論は管理者が望むもの/必要なものと開発者が望むもの/必要なものに焦点を当てています。しかし、あなたは私たちが企業環境にいると指定したので、そのように見てみましょう。

したがって、ITまたは運用の責任者、または予算を管理している人の前でこれを議論していると想像して、これらの質問をしてください。

  1. 部門の機能を実行するために必要な最小限の特権は何ですか?これがベースラインです。
  2. より多くのアクセスを許可することのリスクは何ですか?(実際のリスク、最良/最悪のシナリオだけではありません)
  3. より多くのアクセスを許可するための実際の予想コストはいくらですか?(サポートコスト、経験の浅い管理者による不注意な変更の修正など)
  4. より多くのアクセスを許可しない場合の実際の予想コストはいくらですか?(生産性の低下、日々のタスクを実行するためのITサポート、士気による経験豊富な人の離職など)

これらの質問に答えることで、情熱的な決断ではなく、情報に基づいた決断を下すことができます。

特定の環境では、管理者権限を必要とするものがいくつかありますユーザー権利とVisual Studioを参照)-それらを行っていない場合は、質問2〜4に答えることができます。

コンサルタントとして、私はこのポリシーの両極端を見てきました。また、マシンへの管理者アクセス常に必要としていますが、場合によっては意味がありませんでした。そして、何が原因で何が効果なのかはわかりませんが、例外なく、開発者が管理者のアクセス権を持つWindows開発を行ったすべての場所は、ロックされた場所よりもすべての開発者の生産性が非常に高くなりました。


+1を適切な視点に置くためです。開発者と管理者の個人的な好みを取り出し、組織全体にとって重要なことに集中します。
ジャアプクーマン14年

4

あなたは間違った質問をしていると思う、あなたは尋ねるべきです:

優れた開発者は、PCの管理者権限を与えない雇用主のために働きますか?

誰かが「必要とする」ものと彼らが期待するものは、多くの場合同じものではありません。開発者が勤務時間内にコーヒーを飲むことを許可する必要はありませんが、そうでなければ…

(面接の段階でポリシーを明確にしてください。そうしないと、管理者権限がないために、人々が仕事を引き受ける可能性があります。プログラマーがこの種のことを論理的に考えることを期待しないでください。 )


私はどちらも高等教育で働いており、私のグループの全員と同様に「システム管理者/プログラマー」でもあることを認めますので、私の経験は完全に関連しているとは思いません。しかし、私は自分のワークステーション(OSの選択とインストール、ソフトウェアの選択など)を完全に制御できないショップで開発者として働くことは想像できません。
ジェイソンアントマン

4

それは、実際に誰が実際にそれを必要とするかについて、誰に尋ねるかによります。企業のITおよびリスク管理グループに尋ねると、彼らはあなたの周りに恐怖の物語を投げかけます(そして彼らがあなたにそれを与える場合、彼らは責任を負わないという約束の聖なる絆で犠牲にされたヤギを要求します)、開発者一方、主に管理者権限を要求するのは、仕事にストレスがかかり、リークを受けるためにヘルプデスクから許可を求めることなく十分に要求するためです。悲しい事態は、今では力の闘争と力を発揮することよりも、ビジネスと生産性のニーズに関することです(たとえば、他の人が輪を駆け抜けるのは誰なのか)

私見、私が今日まで見た中で最高の職場環境は、2つのグループが分離されている場所です。開発者はフォレスト内に独自のドメインを持ち(これによりITはこのドメインとそのユーザーが会社の他の場所でできることを制御します)、彼らはすべてローカルドメイン管理者としてのMCSEを持つ経験豊富な人を持つローカル管理者であり、独自のテスト環境を持っていますまた、単一のITポリシー(海賊版ソフトウェアなし)を使用して、ローカルLAN上で必要なことや必要なことをほとんど実行できます。企業のITは責任を負わず、開発者にサポートを提供せず、一部の高レベルの企業ルール(ファイアウォール、Facebook、ポルノなどはファイアウォールを介さない、開発者は企業LANとの干渉を許可しない)のみを実施し、RSAベースのVPNが自宅から機能するLAN内に直接配置します。きちんとしましたね。


2

回答は主観的なものであり、個々のシナリオに固有のものである可能性がありますが、ほとんどの場合、「はい」と答えます。


2

開発プロセスにとって管理者権限は重要だと思います。ただし、VMをサンドボックスに使用することは比較的容易であるため、VMに配置してセキュリティを維持できない理由はありません。

何もうまくいかず、数分でワイプして再構築できます。


2
VMにロックしない理由は1つあります。それはパフォーマンスです。主要なアプリケーションに取り組んでいる開発者は、大量のRAM、高速HDDなどを備えたハイスペックマシンのあらゆるビットを簡単に使用できます。VMに配置することは、数年前にマシンを戻すこととほぼ同じです。セキュリティには優れていますが、生産性にはあまり適していません。
ジョンガーデニアス

1
しかし、プロジェクトで公式にサポートされているマシンのローエンドに開発者に書き込みを強制するのには最適です。さらに、仮想サーバーを使用すると、ライブ製品のフォールトトレランス(および場合によってはメインロード)をサポートできます。VMが実行されているマシン/クラスターのすべての問題
。– DivinusVox

4
それは、要件のローエンド向けに書くことではなく、VMが許可するよりも高いパフォーマンスを必要とするツールを使用することに関するものです。VM内でVisual Studio 2010を使用すると、ベアメタル上よりも応答性が著しく低下します。作成中の製品はVMで正常に動作する場合がありますが、開発者のツールが常に動作するわけではありません。
マイケルシミンズ

2

間違いなく!通常、進行中の開発の多くは、仮想環境で行われる場合と行われない場合があります。管理者権限は、サービス処理、レジストリエントリ、およびIISの多くのオーバーライドをローカルで克服するのに役立ちます。一方、開発者に対する信頼度に依存します。

開発者として、私たちがアクセスできないために何かが機能しないといらいらします。


2

依存します。開発者としては、常に最小特権の原則に基づいて操作する必要があります。政府の請負業者として働いている場合、たとえば、管理者アクセス権を持たない契約上の義務がある場合があります。

Java開発者として、私はマシン上で継続的に管理者権限を持つ必要はほとんどありませんでした。ただし、オンデマンドの管理者アクセスが必要な正当なケースがあります(つまり、ラップトップを物理的に別々のドメインに移動する必要があり、それに応じてNICを変更する必要があります)。私のマシンへの永続的で継続的な管理者アクセス。

ITのスタッフが不足している(または無能である、または赤テープに陥っている)ために管理者アクセスが必要になる場合があります。しかし、有能なIT部門で作業している場合、リモートでも」をクリックするだけで管理し、インストールしてください。)

答えは(再び)です-それは依存します。必要に応じて(または妥当な時間内に)インストールできる応答性の高いITスタッフがいますか?開発者は、実際に支払われるタスクに必要ですか?

開発者は、真にと合法的に(のように、それが必要な場合は、「私は、文字通りそれなしで何かをすることはできませんでしょう」(のような利便性ではなく)「私は、私が欲しいものは何でもインストールしたい」)、および ITがサポートしている場合(何らかの理由で)十分な応答性がない場合は、マシンへの管理者アクセスが必要です。

そうでなければ、いいえ。最小限の特権の原則、人々を思い出してください。


2

開発者と開発者がいます。「開発者」が40ドル/時間のJBoss Javaガイで、ルールエンジン用のルールを記述している場合、もちろんそうではありません。「開発者」が350ドル/時間のC / Assemblyで、ビデオ編集ソフトウェアをGPUで可能な限り高速に実行する場合は、もちろんそうです。


1

セキュリティを心配している企業の場合、セキュリティ担当者に指示して、開発およびシステムのモデルで機能するポリシーを施行しようとします。Windows環境では、ほとんどの人は、タスクを実行するために、開発中のホストで管理者権限が必要であると言うでしょう。

これは必ずしも真実ではありません...

カスタムポリシーを作成し、すべてのプログラムと機能をシステム上の開発ユーザーと連携させることができます。目的の設計に応じて、グループまたはカスタムグループを含むプログラム/システムディレクトリのカスタムアクセス許可を使用して、必要な情報を取得する必要があります。

多くの企業は、ハッカーが制御を取得して独自のツールのコンパイルを開始できるため、開発者がシステムをオープンネットワーク上に置くことは非常に危険であると言うでしょう。


あなたが言うことは技術的には正しいが、脆弱な環境を実装し、維持し、作成することは悪夢でもあります。
ジョンガーデニアス

開発ネットワークにフルアクセスし、VPNを使用してインターネット経由で企業ネットワークに接続したい場合は、これが本当の問題である必要があります。私が見た多くの企業IT部門も、良いISPが提供するものよりも少ないものを提供してくれました!! 同じになるように開発者として必要はありませんフィルタリングされていないアカウント部門等のネットワーク
イアンRingrose

1

開発者は(理想的には)2つのドメインログインを持つ必要があります。

ローカル管理者権限(開発作業用)を持つものと、社内の他の全員と同じ権限を持つもの。その後、代表的な権限セットで作業をテストできます。

これにより、ときどき現れるItWorksOnMyMachine-itisの可能性を減らすことができます。


0

私は(明らかに)異議を唱える声を提供し、ノーと言うだけでなく、「ヘックノー」と言わなければなりません。ネットワークにアクセスできないサンドボックス化されたVMの開発者に管理者権限を付与しても問題ありません。Zypherはそれをほぼ正しかった(太字の修正):

「1. 私のボックスで管理者になることは権利ではなく特権です。」これらのシステムは、私が最終的に責任を負う企業資産です。Joe DeveloperがMicrosoft Bobの海賊版をインストールするとき(「必要だったから」)、監査前にどのように見つからなかったかを説明しなければならないのは彼ではありません。開発者は、会社のルールがどういうわけか適用されないと考えます。サンドボックス化されたVMを提供することにより、他の全員が従わなければならないすべてのルールに従うことができます(現在、システムとの間でファイルをコピーできるのはITのみであるため)。魔法のようにリクエストシステムが再びデベロッパーに使用されるようになり、ジョーデベロッパーが開発ボックスを壊しても空は落ちなくなりました-彼は新しいボックスを要求するだけです(または、バックアップを要求された場合は復元します)

デニー氏は、開発者がアプリのインストールを待たなければならない場合、お金がかかると述べました、A。こんにちは...私の時間は、通常、Joe Developerと同じくらい貴重です(通常、既存のクラッパウェアを実行し続けているので、本当にそうですか? Joe開発者が彼の最後の傑作をデバッグするのに費やしたすべての時間に言及する必要があります)、およびB.アプリケーションを待っていたためにdevが予算を超過し、ITのせいにしようとすると、私は言うでしょう:

あなたがソフトウェアを書くために必要なものの計画の欠如は私の責任ではありません、私たちには標準的なツールのセットがあり、そのツールボックスに必要なものが欠けている場合、私をジャンプさせるのではなく、より多くのツールを手に入れるためのリクエストがあったはずですあなたの締め切りは明日なので、あなたのためにそれを得るためにフープを介して。

これらすべてを言ったが、もしあなたが彼らのベイウォッチコレクションを見る権利があり、それらを見るためにベイブウォッチプレーヤーをインストールできないことを知って怒っていると思うくだらないデベロッパーを取り除くことができれば、デベロッパーのデスクトップをロックダウンします。オープンソース」)を緩めることができる場合があります。しかし、優れた開発者がそれを「獲得する」たびに、あなたの会社がその2億ドルの垂直アプリケーションのためにさらに10を雇おうとしているので、注意する必要があります。

編集:私がさらされた開発者が異常に退屈している可能性はかなりあります(ある程度のベンチマークを与えるために、スタックオーバーフローについて聞いたのは現在の作物だけをポーリングすることです)。私が最初に考えるのは、「会社があなたのために支払っているものをどうする必要があるか」です。管理者権限が必要な場合、それらを取得しますが、それらをstqartするべきではありません。率直に言って、あなたがそれに対して何をするかを気にせず、それが機能するボックスを提供できるなら、私たちは両方とも良いです。


14
うわー、BOFHは私たちの中に住んでいます!あなたは、私たちの仕事は主に、ポリシー、法的要件などによって私たちに課せられた制限内で他のすべての人ができる限り最善を尽くすことができるという基本原則に失敗しました。それが私達にそうするのに私達に合うので単に働くことです。
ジョンガーデニアス

最後の段落の+1。適切な開発者を雇うだけであれば、他のすべての段落を削除できます。
ロバートハーヴェイ

6
うわー-私たちと彼らのメンタリティが大好きです。あなたは会社の利益のために(おそらく)一緒にいるので、「彼の」締め切りは実際には「あなたの」締め切りでもあると考えましたか。私は石鹸のバーからあなたを知りませんが、あなたは私に嫌な、横柄な、しようとする方法を見つけようとしている典型的なシステム管理者を思い出させます。皆のために1人の優れたシステム管理者がいます。あなたの会社が雇ったばかりのステレオタイプを永続させ、会社の生活の中で他のすべてをずっと難しくする別の10人が雇っています。制約ではなく、サービスの提供に注意する必要があります。
マイケルシミンズ

I、具体的な答えではこれらの点のほとんどに対処している:serverfault.com/questions/232416/...
マルクGravell

1
たぶん、あなたは「あなたがさらされた開発者が異常に退屈している」理由です…。企業は、自由な発想の開発者か退屈な開発者が必要かどうかを判断する必要があり、自由な発想の開発者が嫌いな方法で行動することはできません。しかし、退屈な開発者は多くの企業の仕事の中で最高のものになる可能性があります。
イアンリングローズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.