Dockerin ja DevOpsin perusteet · Oppitunti

Salaisuuksien hallinta ja RBAC

Tutustukaa edistyneisiin strategioihin arkaluonteisten tietojen hallintaan ja roolipohjaisen käyttöoikeuksien hallinnan (RBAC) toteuttamiseen konttiympäristöissä.

Oppitunti 3/412 vaihetta

Salaisuuksien hallinta ja RBAC on ilmainen Dockerin ja DevOpsin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Dockerin ja DevOpsin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Konttiympäristön suojaaminen

Tervetuloa! Tässä oppitunnissa tutustutaan konttipohjaisten sovellusten tärkeisiin tietoturvakäytäntöihin: salaisuuksien hallintaan ja roolipohjaiseen käyttöoikeuksien hallintaan (RBAC).

Nämä käsitteet ovat olennaisia arkaluontoisten tietojen suojaamisessa ja sen varmistamisessa, että vain valtuutetut entiteetit voivat suorittaa tiettyjä toimintoja konttiympäristöissä.

Salaisuuksien hallinta ja RBAC — kuvitus 1

Salaisuuksien kovakoodauksen vaarat

Arkaluontoisten tietojen, kuten API-avainten, tietokantojen salasanojen tai yksityisten varmenteiden, kovakoodaaminen suoraan sovelluskoodiin tai Dockerfile-tiedostoihin on merkittävä tietoturvariski.

  • Paljastuminen: Kuka tahansa, jolla on pääsy koodivarastoon tai rakennettuun kuvaan, voi nähdä tiedot helposti.
  • Hallinnan puute: Salaisuuden muuttaminen edellyttää koko sovelluksen uudelleenrakentamista ja -käyttöönottoa.
  • Vaatimustenmukaisuusongelmat: Tämä rikkoo monia tietoturvan parhaita käytäntöjä ja sääntelyvaatimuksia.

Ympäristömuuttujat (varoen)

Yleinen, mutta ei aina turvallinen tapa välittää salaisuuksia on käyttää ympäristömuuttujia. Dockerin avulla ne voi välittää -e-lipulla, ja sovellukset voivat lukea ne.

Ympäristömuuttujat voidaan kuitenkin tarkastaa helposti (esimerkiksi komennolla docker inspect), ja ne saattavat säilyä komentohistoriassa tai lokeissa. Todella arkaluontoisille tiedoille on olemassa parempia ratkaisuja.

Docker Secrets käytännössä

Docker Secrets -toiminnolla arkaluontoisia tietoja voidaan tallentaa ja välittää konteille turvallisesti. Kun salaisuus liitetään konttiin, se liitetään tilapäisenä tiedostona hakemistoon /run/secrets/.

Ensin luodaan salaisuus (esimerkiksi echo "my_secure_pass" | docker secret create app_secret -). Sen jälkeen sovellus voi lukea sen:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Kubernetes Secrets -yleiskatsaus

Docker Secretsin tapaan Kubernetesilla on oma objektinsa nimeltä "Secrets" arkaluontoisten tietojen tallentamiseen ja hallintaan. Salaisuudet voidaan liittää tiedostoina Podeihin tai välittää ympäristömuuttujina.

Tärkeää: Kubernetes Secrets -salaisuudet on oletusarvoisesti koodattu base64-muotoon, ei salattu. Siksi ne voidaan helposti purkaa. Jotta tiedot voidaan salata levossa, tarvitaan lisämäärityksiä (esimerkiksi KMS-integraatio).

Käyttöönotto K8s Secrets -salaisuuksilla

Katsotaan esimerkkiä siitä, miten Kubernetes Secret määritellään ja miten sitä käytetään Podissa. Salaisuudet voi määritellä YAML-muodossa tai luoda kubectl-komennoilla.

Luomisen jälkeen Pod voi viitata salaisuuteen liittääkseen sen taltiona tai syöttääkseen sen arvot ympäristömuuttujiksi.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

Ulkoiset salaisuuksien säilöt

Erittäin arkaluontoisille tiedoille tai salaisuuksien hallintaan useissa klustereissa ja ympäristöissä ulkoiset salaisuuksien hallintatyökalut tarjoavat edistyneitä ominaisuuksia, kuten:

  • Keskitetty tallennus: Kaikille salaisuuksille on yksi totuuden lähde.
  • Salaus levossa ja siirron aikana: Vahvemmat tietoturvatakuut.
  • Dynaamiset salaisuudet: Automaattisesti luodut, lyhytikäiset tunnistetiedot.
  • Auditointi ja käyttöoikeuksien hallinta: Hienojakoiset oikeudet ja kattava lokitus.

Suosittuja vaihtoehtoja ovat HashiCorp Vault, AWS Secrets Manager ja Azure Key Vault.

Mikä RBAC on

Roolipohjainen käyttöoikeuksien hallinta (RBAC) on menetelmä, jolla järjestelmän käyttö rajataan valtuutetuille käyttäjille. Sen sijaan, että oikeudet määritettäisiin suoraan yksittäisille käyttäjille, ne ryhmitellään "rooleiksi", joihin käyttäjät liitetään.

Konttien orkestroinnissa RBAC varmistaa, että käyttäjillä, sovelluksilla ja palveluilla on vain tarvittavat oikeudet käsitellä resursseja, kuten Podeja, Deployment-objekteja ja Secrets-salaisuuksia.

K8s RBAC:n rakennuspalikat

Kubernetesin RBAC käyttää muutamia keskeisiä resurssityyppejä:

  • Role: Määrittää oikeudet tietyn namespacen sisällä (esimerkiksi "voi tarkastella podeja" namespacessa "dev").
  • ClusterRole: Määrittää oikeudet koko klusterissa (esimerkiksi "voi tarkastella kaikkia podeja" tai "voi hallita solmuja").
  • RoleBinding: Myöntää Rolen määrittämät oikeudet käyttäjälle, ryhmälle tai palvelutilille namespacen sisällä.
  • ClusterRoleBinding: Myöntää ClusterRolen määrittämät oikeudet käyttäjälle, ryhmälle tai palvelutilille koko klusterissa.

RBAC-esimerkki: käyttöoikeuksien rajoittaminen

Katsotaan esimerkkiä, jossa tietylle palvelutilille myönnetään tietyssä namespacessa oikeus vain listata podeja ja hakea niiden tiedot. Näin vähimpien oikeuksien periaate toteutuu.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Testatkaa ymmärryksenne

Olette oppineet arkaluontoisten tietojen suojaamisesta ja käyttöoikeuksien hallinnasta. On nopean testin aika!

Kertaus: sovellusten suojaaminen

Hienoa työtä! Tässä oppitunnissa opitte kahdesta konttien tietoturvan keskeisestä pilarista:

  • Salaisuuksien hallinta: Arkaluontoisten tietojen suojaaminen Docker Secrets- ja Kubernetes Secrets -toiminnoilla sekä niiden vahvuuksien ja rajoitusten ymmärtäminen.
  • Roolipohjainen käyttöoikeuksien hallinta (RBAC): Hienojakoisten käyttöoikeuksien toteuttaminen Kubernetesissa vähimpien oikeuksien periaatteen varmistamiseksi.

Kun hallitsette nämä, rakennatte entistä vankempia ja turvallisempia konttipohjaisia sovelluksia!

Aloita maksutta

Opi Dockerin ja DevOpsin perusteet tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Salaisuuksien hallinta ja RBAC” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Dockerin ja DevOpsin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Salaisuuksien hallinta ja RBAC”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Dockerin ja DevOpsin perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Salaisuuksien hallinta ja RBAC”?

Tutustukaa edistyneisiin strategioihin arkaluonteisten tietojen hallintaan ja roolipohjaisen käyttöoikeuksien hallinnan (RBAC) toteuttamiseen konttiympäristöissä. Harjoittelet Dockerin ja DevOpsin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Dockerin ja DevOpsin perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Dockerin ja DevOpsin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Salaisuuksien hallinta ja RBAC”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Dockerin ja DevOpsin perusteet-oppitunnilla?

Kyllä. Jokainen Dockerin ja DevOpsin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Konttikuvien tietoturvaskannaus
  2. Konttien ajonaikainen tietoturva
  3. Salaisuuksien hallinta ja RBAC
  4. Verkkokäytännöt ja vähimpien oikeuksien verkotus
← Takaisin: Dockerin ja DevOpsin perusteet