J'ai donc travaillé dans de nombreux lieux de travail en tant que développeur et mon niveau d'accès à la base de données a été varié. Je n'ai généralement pas accès à la base de données de production.
La plupart du temps, j'ai accès à la base de données de test, mais cela varie. Parfois, je peux faire et modifier la base de données et les données à ma guise, mais il existe généralement d'autres dispositions. Comme si je n'avais qu'un accès en lecture aux données.
J'ai travaillé dans un endroit où une équipe DBA gérerait les bases de données, nous ne pouvions pas apporter de modifications du tout à moins que nous ayons soumis un formulaire avec le script sql pour qu'elles "inspectent". Ils n'avaient généralement pas grand-chose à voir avec le projet lui-même, donc la plupart du temps, c'était juste pour appuyer sur F5.
Honnêtement, je peux comprendre pourquoi prod doit être verrouillé, mais je préfère avoir autant d'accès à la base de données dans les environnements de développement et de test. Je pense que la plupart des développeurs sont raisonnablement capables de connaître leur chemin dans une base de données. Mais j'aimerais entendre des opinions? Quel accès aux bases de données les développeurs devraient-ils avoir? Peut-on nous faire confiance pour ne rien casser là-haut?
Réponses:
Les développeurs ont besoin d'un accès en lecture à toutes les bases de données, y compris les prod. Parfois, le problème est que les données sur Prod ne correspondent pas à ce qu'elles attendaient et elles doivent voir les données qui causent le problème car elles ne peuvent pas les reproduire sur dev.
Les développeurs ne doivent pas avoir de droits d'écriture sur les données de production ni de droits pour créer des objets. Rien ne devrait être produit qui ne fasse pas partie d'une version officielle. Trop souvent, les gens font une solution rapide à une prod qui ne fonctionne pas, ce qui rend la prod encore plus bouchée ou fonctionne, mais ils oublient de mettre le code dans les serveurs de développement / AQ / Staging et pire encore dans la source référentiel de contrôle et le code est écrasé environ un mois plus tard dans la prochaine version officielle.
Je préfère que les développeurs aient les droits complets d'AQ de la base de données parce que le déploiement sur un autre serveur les aide à voir s'il y a des lacunes dans leur processus de déploiement (oups j'ai oublié que j'ai changé cette table afin de le faire et ainsi de suite et oups j'ai oublié que j'ai fait ce changement en utilisant l'interface graphique et non dans un script dans le contrôle de code source, c'est ainsi que tout changement structurel de la base de données doit se produire).
Lorsque vous avez un nouveau client de type entreprise qui aura son propre ensemble de serveurs, les autorisations peuvent être allégées avant la mise en ligne. En effet, tant de choses doivent se produire et les quelques personnes qui peuvent y arriver sur prod sont en retard et ont même parfois besoin de prendre un congé. En particulier, les personnes qui importent des données d'un autre système peuvent être chargées de les mettre en production avant le lancement si le chargement de données va prendre du temps. Ces personnes ont tendance à être des spécialistes des données et il y a un niveau de confort plus élevé en leur permettant un accès temporaire à la prod que le développeur d'application moyen. Ce n'est pas un luxe que vous avez lorsque vous vous rendez sur un serveur de production déjà en ligne.
L'une des choses les plus critiques concernant la limitation des droits de production à la base de données est que les développeurs doivent ensuite s'assurer que leur travail est sous une forme qui peut être déployée par quelqu'un d'autre. Cela a tendance à améliorer la qualité du travail car ils n'essaient pas de faire des corrections à la volée car ils ont oublié quelque chose ou quelque chose n'a pas fonctionné car ils l'ont fait différemment sur prod que sur deve en s'appuyant uniquement sur la mémoire. Vous perdez également ces accidents "Oups, j'ai supprimé toute la table utilisateur par accident parce que j'ai oublié de mettre en surbrillance un type d'accident" lorsque les déploiements de prod utilisent uniquement des scripts exécutés dans leur ensemble, pas une commande à la fois, comme c'est généralement le cas lorsque les développeurs exécuter des choses sur prod. Une équipe disposant de droits limités sur les bases de données prod est également plus susceptible de stocker les modifications de base de données dans le contrôle de code source.
la source
Eh bien, c'est vraiment une question de "Vampires (Programmeurs) contre Werewolves (Sysadmins)" comme Jeff Atwood l'a dit ici .
la source
Habituellement (cela signifie qu'il y a le luxe de configurer un environnement complet), le développeur a accès à:
La raison principale pour laquelle les développeurs ne devraient pas toucher aux serveurs de production est: lorsque quelque chose se passe mal, l'équipe d'exploitation est responsable, mais pas les développeurs.
la source
Le minimum absolu dont vous avez besoin pour faire le travail.
Si tous les développeurs ont un accès complet à la base de données, les risques de se mettre en colère (ou ivre, ou extrêmement fatigué ou ...) et de causer de graves dommages sont beaucoup plus élevés que s'ils ne peuvent lire qu'à partir d'une base de données.
Si votre travail peut principalement être effectué sans accès en écriture à la base de données (et en gros, je veux dire au plus quelques demandes de changement par semaine), alors vous n'avez vraiment pas besoin d'un accès en écriture.
la source
Il y a 2 désirs concurrents dans tous les environnements de travail.
Une partie de ce qui façonne l'équilibre qui est atteint (ou devrait de toute façon) est l'attente établie pour les développeurs. Dans chaque travail que j'ai eu, les développeurs avaient accès à tout ce que l'on attendait d'eux qu'ils se limitent. N'accédez au système que si vous savez ce que vous faites. Cela signifiait que vous saviez ce que vous faisiez du point de vue développeur et administrateur système. Si vous n'étiez pas sûr dans l'un ou l'autre domaine, vous n'aviez pas accès aux systèmes sans quelqu'un qui vous a accompagné.
En résumé, si vous ne le savez pas, vous ne devriez avoir accès à aucun autre système que des systèmes de développement facilement reconstructibles . Si vous le savez, vous ne devriez accéder à aucun système, à l'exception de vos systèmes de développement facilement reconstructibles .
la source
Les développeurs devraient avoir un accès complet aux bases de données de développement (idéalement, ils devraient exécuter un serveur local, mais ce n'est pas toujours possible). Ils doivent avoir accès à la base de données build / QA, mais uniquement aux données (doivent obtenir une autorisation / soumettre un ticket pour modifier la structure). Les développeurs ne devraient jamais avoir un accès occasionnel à la base de données de production (sauf s'il s'agit d'une petite entreprise / d'un projet et que les développeurs prennent également en charge la production).
la source
Je pense que la clé ici est le niveau de responsabilité des développeurs. Dans une grande organisation avec beaucoup de développeurs, ils n'auront probablement accès qu'au développement avec un accès en lecture seule à QA / Test.
Cependant, il devrait y avoir des personnes dans l'équipe de développement avec un accès complet à tous les environnements. Il s'agit généralement de la personne responsable de la correction des correctifs, etc. Bien que cela soit quelque peu risqué, il s'agit d'un compromis entre la confiance que vous accordez au développeur, la rapidité avec laquelle vous voulez que les choses soient corrigées et les risques impliqués dans la falsification du système ou la divulgation d'informations dans le système. .
J'ai travaillé dans un grand magasin informatique et nous avions un accès en lecture à la production pour la plupart des gens. En tant que développeur principal, j'avais également des autorisations sur la base de données de production. Je devais toujours suivre les mêmes directives que les administrateurs système et les administrateurs de base de données en termes de processus et de paperasse, mais je pouvais également apporter une correction urgente si nécessaire.
la source
Il y a un problème connexe que la plupart d'entre nous oublient - nous ne sommes peut-être pas les seuls à utiliser la base de données! Nous avons tendance à tenir cela pour acquis, mais nous ne devrions pas. Même les petits sites peuvent demander aux gens d'affaires d'exécuter des outils tiers sur la base de données pour leurs rapports. Les sites d'entreprise auront presque toujours plusieurs utilisateurs des tables de base de données et votre «petit» changement peut casser leurs applications et vice versa.
Donc, cela doit être la première question. Le deuxième doit être le personnel disponible - j'ai travaillé sur des sites qui avaient des administrateurs système qui protégeaient leur gazon mais n'étaient vraiment pas si bons. (C'est probablement pourquoi ils étaient si territoriaux - ils savaient qu'ils attraperaient beaucoup de chaleur si quelqu'un regardait autour.) Parfois, vous devez avoir plus d'accès que vous ne le souhaiteriez.
Mais dans un monde idéal, je suis d'accord avec les arguments avancés par d'autres personnes. Je ne veux pas avoir accès aux données en direct car, franchement, je ne veux pas de responsabilité. Pensez-y - si j'ai un accès opérationnel et qu'il y a une brèche, je devrai passer beaucoup de temps à prouver que je n'ai rien à voir avec cela. Je devrais peut-être montrer que je n'ai pas modifié les données pour des raisons personnelles, etc. De nombreux sites prennent la confidentialité très au sérieux, en particulier. sites gouvernementaux.
Je ne veux même pas un accès en écriture / administrateur au système du groupe de test. Si je ne peux pas faire quelque chose sur le système de production, je ne veux pas pouvoir le faire sur les systèmes de test. L'accès en lecture est l'exception car il est nécessaire pour comprendre ce qui se passe.
Les systèmes de développement, individuels et départementaux, sont une autre histoire. Mais même ici, dans la pratique, il est généralement préférable d'exécuter toutes les modifications de la base de données par le biais d'une personne ponctuelle au lieu de laisser chacun faire son propre travail.
la source
Je suis totalement d'accord avec toutes les réponses, disant "le moins de privilèges possible pour les développeurs sur les bases de données prod". Mais pour être honnête, qui peut refuser aux développeurs l'accès à la base de données s'ils veulent l'obtenir. Avec suffisamment de volonté (que ce soit criminel ou pour de bon), ils obtiendront l'accès nécessaire.
Qui peut les empêcher de mettre un simple éditeur SQL dans l'application? De cette façon, ils peuvent utiliser la base de données avec les privilèges de l'application. Dans la plupart des cas, c'est tout ce qui est nécessaire. Lorsque la base de données est configurée en toute sécurité, ils peuvent ne pas avoir le privilège de créer ou de supprimer des objets, mais ils ont au moins un accès en lecture et en écriture aux données.
J'ai déjà ici les gens qui pleurent. Mais soyez honnête avec vous-même, vous ne contrôlez pas complètement l'application déployée en production, à moins que vous ne l'écriviez vous-même (et pas même alors, pensez aux bibliothèques). Et pour tous les développeurs, comme Erin l'a déjà dit, vous êtes également responsable de l'environnement de production, pas seulement des opérateurs. Utilisez donc vos privilèges à bon escient.
la source