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.