versiones una tipos tener tag sistema sirve qué proyecto podemos para nuestros nos mayor herramienta hacer existen etiquetas etiqueta cuando crear creamos control comando centralizado security git authentication user

security - una - Detener usuarios que se comprometen a git como usuario incorrecto



¿qué herramienta podemos hacer para tener un mayor control de nuestros proyecto en github? (2)

Lo siento, mi publicación se borró antes de enviar mi última actualización:

Puedes comprometerte como otra persona cuando tienes sus credenciales.

Solo para aclarar, el escenario que está preguntando es el siguiente:

Los usuarios Foo y Bar pueden comprometerse con el repositorio. Desea evitar que el usuario Foo se comprometa con el repo como barra de usuario.

En este caso, la barra de usuario debería proteger su clave SSH privada, al igual que protegerían una contraseña. Como eso se usa para autenticar tu compromiso.

Estoy usando git y Codebase para un proyecto.

Acabo de hacer una prueba y puedo comprometerme con el repositorio de git con una dirección de correo electrónico y un conjunto de nombres diferentes, lo que hace que etiquete el compromiso como si fuera un usuario diferente. Empujé esto al repositorio y apareció como el usuario que se había comprometido a pesar de que era yo.

¿Hay alguna manera de evitar que los usuarios se comprometan o presionen con los datos de los usuarios de otra persona (de manera efectiva para que no puedan "falsificar" los commits como si fueran de un usuario diferente)?

Editar:

Supongo que esta autenticación debería ocurrir en la etapa de envío de confirmaciones al servidor, ya que en la copia de trabajo local es simplemente un repositorio al que el usuario tiene acceso completo para hacer lo que quiera. ¿Es esto algo sobre lo que debería preguntarle a Codebase ?

Editar 2:

Configuración de Git según lo solicitado:

(repo / .git / config)

[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = [email protected]:<redacted company name>/<redacted project name>/test.git [branch "master"] remote = origin merge = refs/heads/master


Ooops : si bien esta es una técnica válida, supone que tienes un control total efectivo sobre el servidor. Si está utilizando una solución alojada, todas las apuestas están desactivadas.

Puede validar el nombre del autor y el correo electrónico en el gancho de update del repositorio. Puedes obtener ambos valores de esta manera:

#!/bin/sh set -- refname sha1_old sha1_new author_name=$(git log --pretty=format:%an $sha1_new) author_email=$(git log --pretty=format:%ae $sha1_new)

El truco, por supuesto, es averiguar si estos son válidos o no. Aquí hay un truco:

Puede usar la opción command="" en su configuración ssh para crear un contenedor alrededor de git-receive-pack que asigne claves ssh a la información del autor. Por ejemplo, algo como esto:

#!/bin/sh GV_AUTHOR_NAME="$1" GV_AUTHOR_EMAIL="$2" export GV_AUTHOR_EMAIL GV_AUTHOR_NAME eval exec $SSH_ORIGINAL_COMMAND

Y usaría una línea de authorized_keys algo como esto:

command="~/bin/gitvalidator ''Lars Kellogg-Stedman'' ''[email protected]''" ssh-rsa ...

El resultado de todo esto es que su script de update tendría las variables de entorno GV_AUTHOR_NAME y GV_AUTHOR_EMAIL disponibles, y podría verificarlas contra la confirmación y salir con un error si no coinciden.