Basic Gitea Information

Wspieraj HackTricks

Podstawowa struktura

Podstawowa struktura środowiska Gitea polega na grupowaniu repozytoriów przez organizacje, z których każda może zawierać kilka repozytoriów i kilka zespołów. Należy jednak zauważyć, że podobnie jak w github, użytkownicy mogą mieć repozytoria poza organizacją.

Ponadto, użytkownik może być członkiem różnych organizacji. W ramach organizacji użytkownik może mieć różne uprawnienia do każdego repozytorium.

Użytkownik może również być częścią różnych zespołów z różnymi uprawnieniami do różnych repozytoriów.

I wreszcie, repozytoria mogą mieć specjalne mechanizmy ochrony.

Uprawnienia

Organizacje

Kiedy tworzona jest organizacja, tworzony jest zespół o nazwie Owners i użytkownik jest do niego dodawany. Ten zespół daje dostęp administracyjny do organizacji, te uprawnienia i nazwa zespołu nie mogą być zmienione.

Administratorzy organizacji (właściciele) mogą wybrać widoczność organizacji:

  • Publiczna

  • Ograniczona (tylko zalogowani użytkownicy)

  • Prywatna (tylko członkowie)

Administratorzy organizacji mogą również wskazać, czy administratorzy repozytoriów mogą dodawać i usuwać dostęp dla zespołów. Mogą również wskazać maksymalną liczbę repozytoriów.

Podczas tworzenia nowego zespołu wybierane są kilka ważnych ustawień:

  • Wskazane są repozytoria organizacji, do których członkowie zespołu będą mieli dostęp: konkretne repozytoria (repozytoria, do których zespół jest dodany) lub wszystkie.

  • Wskazane jest również, czy członkowie mogą tworzyć nowe repozytoria (twórca otrzyma do nich dostęp administracyjny)

  • Uprawnienia, które członkowie repozytorium będą posiadać:

  • Dostęp administratora

  • Specyficzny dostęp:

Zespoły i użytkownicy

W repozytorium, administrator organizacji i administratorzy repozytoriów (jeśli są dozwoleni przez organizację) mogą zarządzać rolami przyznanymi współpracownikom (innym użytkownikom) i zespołom. Istnieją 3 możliwe role:

  • Administrator

  • Pisanie

  • Czytanie

Uwierzytelnianie Gitea

Dostęp przez web

Używając nazwa użytkownika + hasło i potencjalnie (i zalecane) 2FA.

Klucze SSH

Możesz skonfigurować swoje konto z jednym lub kilkoma kluczami publicznymi, pozwalającymi powiązanemu kluczowi prywatnemu na wykonywanie działań w Twoim imieniu. http://localhost:3000/user/settings/keys

Klucze GPG

Nie możesz podszywać się pod użytkownika za pomocą tych kluczy, ale jeśli ich nie użyjesz, może się okazać, że zostaniesz odkryty za wysyłanie commitów bez podpisu.

Tokeny dostępu osobistego

Możesz wygenerować token dostępu osobistego, aby dać aplikacji dostęp do swojego konta. Token dostępu osobistego daje pełny dostęp do Twojego konta: http://localhost:3000/user/settings/applications

Aplikacje Oauth

Podobnie jak tokeny dostępu osobistego, aplikacje Oauth będą miały pełny dostęp do Twojego konta i miejsc, do których Twoje konto ma dostęp, ponieważ, jak wskazano w dokumentacji, zakresy nie są jeszcze obsługiwane:

Klucze wdrożeniowe

Klucze wdrożeniowe mogą mieć dostęp tylko do odczytu lub do zapisu do repozytorium, więc mogą być interesujące do skompromitowania konkretnych repozytoriów.

Ochrona gałęzi

Ochrona gałęzi jest zaprojektowana, aby nie dawać pełnej kontroli nad repozytorium użytkownikom. Celem jest wprowadzenie kilku metod ochrony przed możliwością zapisu kodu do niektórych gałęzi.

Ochrona gałęzi repozytorium można znaleźć na https://localhost:3000/<orgname>/<reponame>/settings/branches

Nie można ustawić ochrony gałęzi na poziomie organizacji. Wszystkie muszą być zadeklarowane w każdym repozytorium.

Różne ochrony mogą być zastosowane do gałęzi (np. do master):

  • Wyłącz Push: Nikt nie może pushować do tej gałęzi

  • Włącz Push: Każdy z dostępem może pushować, ale nie force push.

  • Biała lista ograniczonego Push: Tylko wybrani użytkownicy/zespoły mogą pushować do tej gałęzi (ale nie force push)

  • Włącz białą listę Merge: Tylko użytkownicy/zespoły z białej listy mogą łączyć PR-y.

  • Włącz sprawdzanie statusu: Wymagaj przejścia sprawdzeń statusu przed połączeniem.

  • Wymagaj zatwierdzeń: Wskaż liczbę zatwierdzeń wymaganych przed połączeniem PR.

  • Ogranicz zatwierdzenia do białej listy: Wskaż użytkowników/zespoły, które mogą zatwierdzać PR-y.

  • Blokuj merge przy odrzuconych recenzjach: Jeśli są żądane zmiany, nie można ich połączyć (nawet jeśli inne sprawdzenia przejdą)

  • Blokuj merge przy oficjalnych żądaniach recenzji: Jeśli są oficjalne żądania recenzji, nie można ich połączyć

  • Odrzuć przestarzałe zatwierdzenia: Kiedy są nowe commity, stare zatwierdzenia zostaną odrzucone.

  • Wymagaj podpisanych commitów: Commity muszą być podpisane.

  • Blokuj merge, jeśli pull request jest nieaktualny

  • Wzorce plików chronionych/niechronionych: Wskaż wzorce plików do ochrony/niechronienia przed zmianami

Jak widać, nawet jeśli udało Ci się uzyskać dane uwierzytelniające użytkownika, repozytoria mogą być chronione, uniemożliwiając Ci pushowanie kodu do mastera, na przykład w celu skompromitowania pipeline CI/CD.

Wspieraj HackTricks

Last updated