2014-10-15 7 views
24

przypadków użycia:GitHub OAuth2 Token: Jak ograniczyć dostęp do odczytu Pojedyncze prywatne repo

  1. aplikacji wiersza polecenia (które są rozmieszczone na 3 maszyny partyjnej) musi być w stanie pobrać archiwum kopia prywatnego repo należącego do organizacji za pośrednictwem interfejsu API GitHub (v3)

  2. Aplikacja powinna mieć dostęp tylko do tego prywatnego repozytorium i żadnych innych transakcji repo z uprawnieniami tylko do odczytu.

Osiągnąłem (1), tworząc autoryzację dla aplikacji po zarejestrowaniu identyfikatora klienta/sekret na moim koncie github. Jednak nie wydaje się, aby tokeny zwrócone przez autoryzację zezwalały na dostęp tylko do odczytu do repo i nie są ograniczone do jednego repo (np. Można potencjalnie użyć tokena do modyfikacji tego repo wraz z innymi należącymi do organizacji).

Czy można ograniczyć dostęp przez odpowiedni zakres? Nie widzę niczego istotnego w dokumentach API (https://developer.github.com/v3/oauth/#scopes).

+1

Byłbym również zainteresowany czymś w tym stylu, pomijając ograniczenie tylko do odczytu. Jedyne, co wydawało się istotne, to rozmieszczenie kluczy, które można utworzyć dla repozytorium, ale nie jestem pewien, czy można ich użyć za pośrednictwem interfejsu API. Wydaje się, że jedynym sposobem obejścia tego problemu byłoby dodanie manekina, którego używasz do logowania się do interfejsu API jako współpracownik do tego repozytorium. –

Odpowiedz

14

Nie wierzę, że można w ten sposób ograniczyć żetony OAuth Github. github docs for OAuth że

Podczas Git przez HTTP z OAuth zmniejsza tarcie dla niektórych typów aplikacji, należy pamiętać, że w przeciwieństwie do rozmieszczenia przycisków, tokeny OAuth pracy w dowolnym repozytorium, do których użytkownik ma dostęp.

Więc gdy można ograniczyć zakres tokena pod względem typów działań, nie można ograniczać się do podzbioru repo.

Deploy keys może być ograniczone do jednego repozytu, ale umożliwia dostęp do zapisu.

Oczywistą taktyką (wspomnianą przez Thomasa) jest utworzenie konta fikcyjnego, które reprezentuje aplikację. Biorąc pod uwagę cele OAuth, w każdym razie może to być lepszy przepływ pracy - pozwoli to łatwo zmienić uprawnienia aplikacji, tak jakby był w rzeczywistości użytkownikiem.

Github wymienia tę strategię wyraźnie, nazywając ją: machine users.

+0

Mimo że działa to nie jest wygodne dla organizacji, ponieważ nie można odwołać tokena dla określonego użytkownika. –

+1

Klucze wdrażania są domyślnie dostępne tylko do odczytu/przeciągnięcia, opcjonalnie możesz też nadać im prawo zapisu/pchania. – nooitaf

Powiązane problemy