jit

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

* Package jit, geçici erişimin yaşam döngüsü: bir hedefte süreli hesap * açmak, süresi dolunca oturumlarını kesip hesabı sökmek, ve olmadıysa * olmadığını yüksek sesle söylemek. * * ⚠️ BU PAKET HEDEFTE ROOT'LA İŞ YAPIYOR. Her giriş yolu iki kural * taşıyor: denetim satırı BAĞLANMADAN ÖNCE yazılıyor ve yazılamazsa * bağlanılmıyor (httpapi/terminate.go ile aynı gerekçe); hedefe giden her * komut provision'ın planından geçiyor, burada komut kurulmuyor.

Index

Constants

View Source
const (
	/*
	 * MinDuration / MaxDuration, bir hakkın süresinin sınırları.
	 *
	 * ⚠️ ALT SINIR SÜPÜRÜCÜNÜN TURUNDAN UZUN. Süpürücü dakikada bir
	 * bakıyor; bir dakikalık hak, daha uygulanmadan geri alınmaya
	 * başlayabilirdi. ÜST SINIR "geçici"nin anlamını koruyor: otuz günden
	 * uzun bir hak kalıcı erişimdir ve o rol/hedef bağıyla verilmeli.
	 */
	MinDuration = 5 * time.Minute
	MaxDuration = 30 * 24 * time.Hour
)

Variables

View Source
var (
	ErrNotEnabled = errors.New("jit: management is not enabled on this bastion")
	ErrRevoked    = errors.New("jit: the grant has already been revoked")
)

Functions

This section is empty.

Types

type Outcome

type Outcome struct {
	Grant  store.JITGrant
	Report provision.Report
	// Terminated, geri almada kesilen açık oturum sayısı.
	Terminated int
}

Outcome, bir grant ya da revoke koşusunun sonucu: kayıt ve hedefte adım adım ne olduğu.

type Request

type Request struct {
	// Username, postern kullanıcısı; hedefteki hesap onun os_user'ı.
	Username string
	Target   string
	Groups   []string
	Sudo     *sudoers.Rule
	Duration time.Duration
	// CleanupGroups, geri almada postern'in bu hak için açtığı gruplardan
	// boş kalanları silme izni. Panelin onay kutusu; varsayılan evet.
	CleanupGroups bool
}

Request, istenen hak.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service, hakların yaşam döngüsünü yürütür.

func New

func New(db *store.Store, authority *ca.CA, live *proxy.Live, logger *slog.Logger) *Service

New, hizmeti kurar. live nil olabilir: o zaman süresi dolan hakkın açık oturumları kesilmez (yalnızca hesap sökülür) ve bu loglanır.

func (*Service) Grant

func (s *Service) Grant(ctx context.Context, req Request, actor string) (Outcome, error)

* Grant, hedefte süreli hesap açar. * * Sıra: doğrula → denetim satırı → bağlan → yeteneği ölç → durumu oku → * planla → KAYDI YAZ → uygula → sonucu yaz. Kayıt uygulamadan önce * yazılıyor (bkz. store.CreateJITGrant); plan uygulamadan önce reddederse * (yönetilemeyen makine, önceden var olan hesap, kötü ad) hedefe hiç * dokunulmadığı için kayıt da yok.

func (*Service) Revoke

func (s *Service) Revoke(ctx context.Context, id, actor, via string) (Outcome, error)

* Revoke, hakkı geri alır: açık oturumlar kesilir, hesap ve dosyaları * sökülür. Elle ve otomatik geri alma bu tek yoldan geçiyor. * * ⚠️ OTURUMLAR ÖNCE, HESAP SONRA. Hesap silinirken oturum açık kalsaydı, * kabuk sahipsiz bir UID ile koşmaya devam ederdi; sökme planı süreçleri * öldürüyor ama bastion'daki oturum kaydı ancak burada kapanıyor.

func (*Service) Run

func (s *Service) Run(ctx context.Context)

Run, süpürücüyü bağlam bitene kadar koşturur; açılışta bir tur yapıyor ki yeniden başlatma sırasında dolan haklar bir dakika daha beklemesin.

func (*Service) Sweep

func (s *Service) Sweep(ctx context.Context) (revoked, failed int)

* Sweep, süresi dolmuş hakları geri alır. Her turda her hak için ayrı bir * bağlantı; başarısızlık bir sonraki hakkı durdurmuyor.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL