Tjänstekonton
Skapa ett tjänstekonto för CI/CD eller en annan integration, ge det roller, hämta en token med dess autentiseringsuppgifter, och rotera eller radera det.
Kräver: rbac/members/write
Ett tjänstekonto är en principal för en maskin snarare än en person — en CI/CD-pipeline, ett skript, ett annat system. Det loggar in med ett klient-ID och en klienthemlighet i stället för ett lösenord, och kan göra exakt det som rollerna det tilldelats tillåter.
För att skapa, rotera och radera tjänstekonton krävs rbac/members/write på boundaryn; Owner och
Platform Owner har den. För att lista dem krävs rbac/members/read.
Skapa ett tjänstekonto
- Öppna Inställningar → Identitet i sidomenyn och sedan fliken Tjänstekonton. Kontrollera att den boundary som är vald i sidomenyn är den som kontot är till för.
- Välj Skapa.
- Ange ett Namn, till exempel
CI/CD Pipeline, och, om du vill, en Beskrivning (valfritt). - Skapa kontot. Dialogen Autentiseringsuppgifter visar dess Klient-ID och Klienthemlighet.
- Kopiera båda och förvara dem där systemet som ska använda dem förvarar sina hemligheter — till exempel i ett valv eller i ditt CI-systems hemlighetslager. Välj sedan Klar.
Viktigt
Klienthemligheten visas bara en gång. Om den tappas bort roterar du hemligheten för att få en ny.
Klient-ID:t har formen sa- följt av en genererad identifierare; namnet du angav är bara kontots
visningsnamn. Fliken Tjänstekonton listar också hanterade identiteter — de identiteter som
plattformen skapar för arbetslaster; använd typfiltret för att skilja dem åt.
Med CLI:t:
stsh iam sa create --set name=ci-pipeline --set description="Deploys from CI"Ge det roller
Ett nytt tjänstekonto har inga roller och kan ingenting. Tilldela det roller som för vilken annan principal som helst: i Åtkomstkontroll (IAM) väljer du Lägg till rolltilldelning, söker efter tjänstekontot på dess namn och väljer roll och omfattning — se Tilldela en roll. Ge bara det som integrationen behöver, med den snävaste omfattning som fungerar.
Hämta en token
Ett tjänstekonto hämtar en åtkomsttoken från plattformens identitetsleverantör med OAuth 2.0-flödet client credentials, och skickar den till API:et som en bearer-token:
curl -s https://auth.example.com/realms/stackship/protocol/openid-connect/token \
-d grant_type=client_credentials \
-d client_id="$CLIENT_ID" \
-d client_secret="$CLIENT_SECRET"Använd access_token från svaret som Authorization: Bearer <token> i anrop till
https://api.example.com. Tokens är kortlivade — femton minuter om inte din plattform är konfigurerad
annorlunda — så hämta en ny när den har gått ut. Se Autentisera.
CLI:t stsh loggar in som ett tjänstekonto när STACKSHIP_CLIENT_ID och STACKSHIP_CLIENT_SECRET
är satta i dess miljö:
export STACKSHIP_CLIENT_ID=sa-...
export STACKSHIP_CLIENT_SECRET=...
stsh whoamiCLI-kontexten behöver ändå identitetsleverantörens adress och realm, som stsh setup frågar
efter.
Rotera hemligheten
Välj Rotera hemlighet på kontots rad och bekräfta. Den nya hemligheten visas en gång. Den tidigare hemligheten slutar fungera direkt; tokens som redan utfärdats med den gäller tills de går ut.
stsh iam sa rotate-secret <service-account-id>Radera ett tjänstekonto
Välj raderingsåtgärden på kontots rad och bekräfta Ta bort tjänstekonto?. Varje system som använder kontot förlorar åtkomsten så snart dess aktuella token går ut.
Att radera kontot tar inte bort dess rolltilldelningar. Ta bort dem i Åtkomstkontroll (IAM) också.
stsh iam sa delete <service-account-id>