2010-11-23 5 views
4

Mercurial 신분 도용으로부터 자신을 보호 할 방법이 있습니까?Mercurial ID 도용으로부터 자신을 보호 할 방법이 있습니까?

다른 개발자의 이름을 사용하여 의도적으로 버그를 저지른 사람이 해고되거나 잘못 신용 될 수 있습니다.

그런 일을 막을 수있는 방법이 있습니까? 아니면 문제가되지 않습니까?

+1

아마도 재미있는 읽을 거리 (해결책은 없습니다) : http://greenspringdesign.com/blog/?p=11 – Lucero

+0

다른 개발자와 변경 작업을하고 있고 번들을 다시 공유하고 있다면 앞으로 (메인 레포를 오염시키지 않기 위해). 결국, 나는 그들에게 자신의 이름으로 커밋을 할 수도 있지만, 그것은 완벽하게 합법적 일 것이다. – robert

+0

@robert, exaclty 이것은 DVCS의 요점입니다. 누구든지 다른 사람이 변경 한 내용을 포함하는 변경 집합을 푸시 할 수 있습니다. 따라서 푸시되어야하는 커밋을 신뢰하는지 여부를 어떻게 든 확인해야하며 커밋에 암호화 서명을 사용하여이를 수행 할 수 있습니다 (이는 전자 메일 서명 또는 ID 확인을위한 데이터와 유사합니다). 그런 다음 서버는 신뢰 된 엔티티 (인증서, 인증 기관 등) 목록에 대해 커밋 서명을 검사하여 신뢰할 수있는 커밋 만 수행되도록 할 수 있습니다. 각 서명은 고유 한 소유자와 일치시킬 수 있습니다. – Lucero

답변

7

커밋을 실제로 제한하는 방법을 모르거나 "도난당한"ID는 포함시키지 않습니다.하지만 중앙 리포지토리가있는 경우 누가 서버에 변경 내용을 적용했는지 감사 할 수 있어야합니다. 신원 도둑을 추적 해.


편집 : 서명에 대한 지원이 개 확장의 CommitsigsExtension뿐만 아니라 GpgExtension에 의해 구현 겉으로는 덜 안전한 방법으로 커밋있을 것 같습니다.

도둑이 도용하려는 ID의 개인 키를 가지고 있지 않기 때문에 변경 집합에 서명하면 신원 도용이 효과적으로 방지되므로 커밋에 서명 할 수 없습니다.

+0

편집하기 전에 가지고있는 내용이 마음에 들어요. 예를 들어, SourceForge는 무엇을 밀어 넣은 프로젝트의 "개발"섹션에 표시됩니다. 푸시 후크로 너무 어려움없이 추적 할 수 있다고 생각합니다. 내가 아는 한 아무도 그것을 해내 지 못했다. –

0

"기본"저장소 및 로그 요청에 대한 액세스 제어를 사용하십시오. 누가 각 커밋을 푸시하도록 인증 된 사용자인지 기록하면 리포지토리의 정보와 관계없이 누가 특정 커밋을 실제로 푸시했는지 알 수 있습니다.

+0

ACL이하는 일과 중앙 리포에서 유효하지 않은 커밋을 보호하는 방법을 이해하고 있지만 로컬 저장소에서 신원 도용을 방지 할 수있는 확장 방법을 알지 못합니까? 그걸 좀 자세히 설명해 주시겠습니까? – Lucero

+0

내 로컬 Mercurial 저장소를 수정하려면 나로 로그인 할 수 있어야합니다. 보안이 걱정된다면 한 명 이상의 사람이 액세스 할 수있는 모든 저장소에는이 액세스 제어/기록이 필요합니다. 개별 개발자 repos하지 않습니다. 예, 다른 사람들이 보이는 오해의 소지가있는 지역 커밋을 할 수는 있지만 밀어 넣을 때 잡을 수 있습니다. – robert

+0

다음과 같이 가정합니다. repo 복제본이 있으며 변경 사항을 직접 푸시 할 수 있습니다. 이제 로컬에서 내 이름을 사용하여 변경 사항을 커밋 한 다음 내 계정을 사용하여 변경 내용을 푸시합니다. 커밋 된 변경 사항을 커밋에 첨부 된 이름으로 푸시합니다. 이 질문은 액세스 제어에 관한 ** **에 관한 것이 아니라 변경을 커밋 할 때 누군가 다른 사람의 신원을 남용하지 않도록하는 것에 관한 것입니다. – Lucero

2

Mozilla 프로젝트는 푸시 로그 형식으로이 작업을 수행합니다. 그들은 changeset 후크를 사용하여 푸시 시간에 쉽게 생성되는 푸시 로그의 출력을 표시하기 위해 웹 템플리트를 사소한 변경했습니다. 여기에 자신의 로그가 보이는 무슨과 같은 :

http://hg.mozilla.org/mozilla-central/pushloghtml

으로 쉽게 될 수 이러한 로그를 생성하는 훅 :이 실제로

[hooks] 
changeset = echo $REMOTE_USER pushed HG_NODE >> /path/to/my/pushlog 

이 모든 것이 될 것입니다 생각하는 것을 것들 중 하나입니다 문제는 처음에는 "사용자"필드가 전적으로 거짓이라는 말을 듣지 만 실제로는 실제로 문제가되지 않습니다.

관련 문제