Java >> Java tutorial >  >> Java

SPIFFE i en nøddeskal

Jeg har studeret SPIFEE(Secure Production Identity Framework For Everyone)[1] i et stykke tid, og her udarbejder jeg flowet, som jeg har forstået nu, til gavn for alle andre, der forsøger at forstå flowet.

  • Identitetsregister – SPIRE-serveren har et eget identitetsregister, som beholder to grovkornede attributter, der bestemmer, hvordan SPIFFE-id'erne vil blive udstedt til en arbejdsbelastning. Det gemmer detaljer som i nedenstående tabel.

SPIFFE ID

Nodevælger

Procesvælger

spiffe://abc.com/bill

aws:ec2:1234

k8s:namespace:1234

spiffe://xyz.com/account

token:7236427472

unix:uid:1002

Der findes en separat registrerings-API til at administrere disse poster i identitetsregistret.

  • Knudevælger – Dette definerer en maskine (fysisk eller virtuel), hvor en arbejdsbelastning kan køre på. Den nøjagtige type vælger, der skal bruges, bestemmes ud fra den infrastrukturudbyder (AWS, GCP, bare metal), som arbejdsbyrden kører. For eksempel. AWS EC2 Instance ID, et serienummer på en fysisk maskine. Node attestor handler baseret på infrastrukturudbyderen for at ære deres vælgere.
  • Workload Selector – Dette definerer, hvordan man identificerer en proces som repræsenterende en arbejdsbelastning, efter at noden er identificeret. Dette kan beskrives i form af attributter for selve processen (f.eks. Linux UID) eller i form af indirekte attributter såsom et kubernetes-navneområde. Nodeagent er ansvarlig for at verificere, at en bestemt proces på en maskine kvalificerer sig til dens arbejdsbelastningsvælger. Arbejdsbelastningsattestator handler baseret på procesattributterne for at ære procesvælgerne.
  • SPIRE Node Agent – En proces, der sidder på noden, verificerer oprindelsen af ​​arbejdsbelastninger, der kører på noden, og forsyner disse arbejdsbelastninger med certifikater via Workload API, baseret på vælgerne.
  1. Registration API kaldes enten af ​​en administrator eller en tredjepartsapplikation for at udfylde identitetsregistret med de påkrævede SPIFFE ID'er og relevante vælgere.
  2. Knudeagenten bliver autentificeret med SPIRE-serveren ved hjælp af et forudetableret kryptografisk nøglepar eller baseret i infrastrukturudbyderen. For eksempel i tilfælde af AWS EC2 vil nodeagent indsende nodens Instance Identification Document (IID) udstedt af AWS.
  3. Nodeattestor i SPIRE-serveren validerer det leverede identifikationsdokument baseret på den anvendte mekanisme. Hvis AWS IID'et bruges, vil den relevante attestor validere det med AWS-indstillinger. Efter vellykket validering sender SPIRE-serveren et sæt SPIFFE-id'er tilbage, som kan udstedes til noden sammen med deres procesvælgerpolitikker.
  4. Når arbejdsbelastningen begynder at køre i noden, foretager den først et opkald til nodeagenten og spørger "hvem er jeg?".
  5. Baseret på den procesvælger-nodeagent, der blev modtaget i det foregående trin, og ved hjælp af arbejdsbelastningsattestorerne, beslutter agenten det SPIFFE-id, der skal gives til arbejdsbelastningen. Den genererer et nøglepar baseret på det og sender CSR (Certificate Signing Request) til SPIRE-serveren.
  6. SPIRE-serveren reagerer på nodeagenten med den signerede SVID for arbejdsbyrden sammen med tillidsbundterne, hvilket angiver, hvilke andre belastninger der kan stoles på af denne arbejdsbelastning.
  7. Ved modtagelse af svaret fra SPIRE-serveren, overdrager nodeagenten den modtagne SVID, trust bundter den genererede private nøgle til arbejdsbelastningen. Denne private nøgle forlader aldrig den node, dens arbejdsbelastning tilhører.

Du er velkommen til at foreslå enhver rettelse, hvis du bemærker det.

[1] – https://spiffe.io

[2] – https://docs.google.com/document/d/1RZnBfj8I5xs8Yi_BPEKBRp0K3UnIJYTDg_31rfTt4j8/edit#


Java tag