Skip to main content
  • »
  • CHMURA OPENSTACK »
  • Jak wygenerować lub użyć poświadczeń aplikacji za pośrednictwem CLI na NSIS Cloud

Jak wygenerować lub użyć poświadczeń aplikacji za pośrednictwem CLI na NSIS Cloud

Można uwierzytelnić aplikacje w keystone poprzez utworzenie dla nich poświadczeń. Możliwe jest również delegowanie podzbioru przypisań roli w projekcie do poświadczenia aplikacji, udzielając tej samej lub ograniczonej autoryzacji do projektu dla aplikacji.

Dzięki poświadczeniom, aplikacje uwierzytelniają się z „identyfikatorem poświadczenia aplikacji” i ciągiem „secret”, który nie jest hasłem użytkownika. Dzięki temu, hasło użytkownika nie jest osadzone w konfiguracji aplikacji, co jest szczególnie ważne dla użytkowników, których tożsamości są zarządzane przez zewnętrzny system, taki jak LDAP lub system logowania jednokrotnego.

Wymagania wstępne

Nr 1 Hosting

Potrzebujesz konta hostingowego NSIS Cloud z interfejsem Horizon https://horizon.cloudferro.com.

Nr 2 Uwierzytelnienie

Po zainstalowaniu tego oprogramowania, musisz się uwierzytelniać, aby rozpocząć jego używanie: Jak aktywować dostęp OpenStack CLI do chmury NSIS przy użyciu uwierzytelniania dwuskładnikowego

Nr 3 OpenStackClient zainstalowany i dostępny

OpenStack jest napisany w Pythonie, więc zalecane jest użycie dedykowanego środowiska wirtualnego na potrzebę tego artykułu.

Zainstaluj GitBash w Windows

Jak zainstalować OpenStackClient GitBash dla Windows na NSIS.

Zainstaluj i uruchom WSL (Linux pod Windows)

Jak zainstalować OpenStackClient w systemie Windows przy użyciu Windows Subsystem for Linux na hostingu NSIS OpenStack?.

Zainstaluj OpenStackClient na Linux

Jak zainstalować OpenStackClient dla systemu Linux na NSIS.

Nr 4 jq zainstalowany i uruchomiony

Będziesz potrzebować jq zainstalowanego i uruchomionego. Na przykład na Ubuntu, polecenia będą takie:

apt update && apt upgrade -y  # Pobierz najnowszą listę pakietów i uaktualnij zainstalowane pakiety
apt install jq -y             # Zainstaluj jq z domyślnego repozytorium Ubuntu
jq --version                  # Sprawdź zainstalowaną wersję jq

Krok 1: Polecenia CLI dla poświadczeń aplikacji

Polecenie

openstack application credential

wyświetli cztery dostępne polecenia:

application credential create
application credential delete
application credential list
application credential show

Aby zobaczyć parametry tych poleceń, dodaj na końcu --help:

openstack application credential create --help

Wśród wielu linii opisujących wszystkie możliwe parametry, szczególnie interesujące są polecenia do tworzenia nowych poświadczeń:

../_images/credential_create_help.png

Informacja

Opcja --help spowoduje wyświetlenie wyniku w stylu vim, więc naciśnij q na klawiaturze, aby wrócić do zwykłej linii terminala.

Krok 2: Najprostszy sposób tworzenia nowych poświadczeń aplikacji

Najprostszy sposób generowania nowych poświadczeń aplikacji to po prostu określenie parametru –name, reszta parametrów zostanie określona automatycznie. Poniższe polecenie używa nazwy cred2:

openstack application credential create cred2

Nowe poświadczenie aplikacji zostanie utworzone i wyświetlone na ekranie:

../_images/create_new_with_name.png

Krok 3: Użycie wszystkich parametrów do tworzenia nowych poświadczeń aplikacji

Oto znaczenie powiązanych parametrów:

--secret

Wartość tajna do użycia dla uwierzytelnienia. Jeśli pominięta, zostanie automatycznie wygenerowana.

--role

Role do autoryzacji. Jeśli nie określono, wszystkie role dla bieżącego użytkownika zostaną skopiowane. Powtórz ten parametr, aby określić inną rolę, która ma zostać częścią poświadczenia. Przykład ról:

_member_ magnum_user load-balancer_member heat_stack_owner creator k8s_admin

Informacja

Rola _member_ jest najbardziej podstawową rolą i powinna zawsze być obecna. Jednakże, w niektórych wariacjach OpenStack może być nazywana member zamiast _member_.

--expiration

Ustawia datę wygaśnięcia. Jeśli nieobecna, poświadczenie aplikacji nie wygaśnie. Format to RRRR-mm-ddTHH:MM:SS, na przykład:

--expiration $(date +"%Y-11-%dT%H:%M:%S")

To da następującą datę:

2022-11-09T13:27:01.000000

Parametry --unrestricted i --restricted

Domyślnie, ze względów bezpieczeństwa, zabronione jest uwierzytelnianie aplikacji do tworzenia dodatkowych poświadczeń aplikacyjnych lub keystone trusts. Jeśli twoja aplikacja musi mieć możliwość wykonywania tych działań, użyj parametru --unrestricted.

Oto kompletny przykład, używający wszystkich dostępnych parametrów do tworzenia nowych poświadczeń aplikacji:

openstack application credential create foo-dev-member4  --role _member_   --expiration $(date +"%Y-11-%dT%H:%M:%S") --description "Test application credentials"   --unrestricted   -c id   -c secret   -f json   | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'

Rezultat to:

../_images/complete_example.png

Nazwa nowych poświadczeń aplikacji foo-dev-member4, będzie używana przez rolę _member_ itd. Część polecenia rozpoczynająca się od | jq -r pokazuje tylko wartości poświadczeń id i secret, ponieważ musisz wprowadzić te wartości do pliku clouds.yml, aby aktywować część rozpoznawania procesu.

Krok 4: Wprowadź id i secret do clouds.yml

Teraz przechowujesz wartości id i secret wysłane przez chmurę. Po przechowaniu, przyszłe polecenia openstack będą używać tych wartości do uwierzytelnienia w chmurze bez użycia hasła.

Miejsce do przechowania id i secret to plik nazwany clouds.yml. Może on być zlokalizowany na twoim komputerze lokalnym w jednym z trzech miejsc:

Bieżący katalog

./clouds.yml

Możesz utworzyć specjalny folder z poleceniem mkdir i wkleić clouds.yml do niego.

Bieżący katalog jest wyszukiwany jako pierwszy.

Katalog konfiguracji użytkownika

$HOME/.config/openstack/clouds.yml

Najczęstsze domyślne miejsce dla poszczególnych użytkowników.

Wyszukiwany po bieżącym katalogu.

Katalog konfiguracji systemu

/etc/openstack/clouds.yml

Przeszukuje tę lokalizację jako ostateczność.

Zwykle musisz być zalogowany jako root, aby modyfikować ten plik.

Pierwszy plik clouds.yml, który zostanie znaleziony, zostanie użyty.

Informacja

Zawartość pliku clouds.yml będzie w formacie yaml. Standardowym rozwiązaniem jest rozszerzenie yaml, ale w tym przypadku nie jest to yaml – jest to yml.

Utwórz nowe poświadczenie aplikacji o nazwie trial-member_creatornew.

openstack application credential create trial-member_creatornew --unrestricted -c id -c secret   -f json   | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'
../_images/create_credential.png

Teraz utwórz plik clouds.yml przy użyciu edytora wybranego przez siebie. Tutaj jest to nano:

nano $HOME/.config/openstack/clouds.yml

Jeśli plik nie istnieje, nano utworzy go na nowo. Oto jego zawartość:

clouds.yml

clouds:
  trial-member_creatornew:
        auth_type: "v3applicationcredential"
        auth:
          auth_url: https://keystone.cloudferro.com:5000/v3
          application_credential_id: "a582edb593644106baeaa75fd706feb2"
          application_credential_secret: "mPKQort71xi7Ros7BHb1sG4753wvN_tmJMBd1aRBBGzgFZM7AoUkLWzCutQuh-dAyac86-rkikYqqYaT1_f0hA"

Rozłóżmy ten plik linia po linii:

  • clouds: jest w liczbie mnogiej, ponieważ możliwe jest zdefiniowanie parametrów dwóch lub więcej chmur w tym samym pliku.

  • trial-member_creatornew jest nazwą aplikacji poświadczeń użytych w poprzedniej komendzie credential create.

  • v3applicationcredential jest rodzajem połączenia autoryzacji (zawsze jest taki sam)

  • auth rozpoczyna parametry auth

  • auth_url jest adresem do wywołania na serwerze NSIS Cloud OpenStack (zawsze jest taki sam)

  • application_credential_id jest wartością z poprzedniego wywołania komendy credential create

  • application_credential_secret jest wartością z poprzedniego wywołania komendy credential create

To jest podgląd tego pliku w edytorze:

../_images/nano_values.png

Zapisz go klawiszami Ctrl-X, następnie naciśnij Y i Enter.

Krok 5 Uzyskaj dostęp do chmury, określając OS_CLOUD lub –os-cloud

Poświadczenia aplikacji zapewniają dostęp do wszystkich aktywowanych regionów, więc musisz określić, który z nich ma być użyty. Określ go jako wartość parametru –os-region.

W poprzednim kroku zdefiniowałeś plik clouds.yml, który zaczynał się od clouds:. Następna linia definiowała, do której chmury odnoszą się parametry, tutaj było to trial-member_creatornew. Zgodnie z projektem, plik clouds.yml może zawierać informacje na temat kilku chmur, nie tylko jednej, więc konieczne jest rozróżnienie, do której chmury się odnosi. Istnieje specjalny parametr do tego celu, zwany

  • OS_CLOUD, jeśli używany jako parametr systemowy lub

  • –os-cloud, jeśli używany z linii poleceń.

Definiujesz OS_CLOUD przez bezpośrednie przypisanie jego wartości z linii poleceń:

export OS_CLOUD=trial-member_creatornew
echo $OS_CLOUD

Otwórz nowe okno terminala, wykonaj powyższą komendę, a następnie spróbuj uzyskać dostęp do serwera:

../_images/export_os_cloud.png

Działa.

Możesz również użyć tego parametru w linii poleceń, np.:

openstack --os-cloud=trial-member_creatornew flavor list

Działa również:

../_images/cli_os_cloud.png

Musisz ustawić OS_CLOUD za każdym razem przy otwarciu nowego okna terminala, a następnie możesz używać komendy openstack bez interpolowania parametru –os-cloud cały czas.

Jeśli masz dwie lub więcej chmur zdefiniowanych w pliku clouds.yml, wówczas użycie –os-cloud w linii poleceń byłoby bardziej elastyczne.

W obu przypadkach możesz uzyskać dostęp do chmury bez podawania hasła, co było celem od samego początku.

Przechowywanie zmiennych środowiskowych

Możesz wyeksportować je jako zmienne środowiskowe. Zwiększa to bezpieczeństwo, zwłaszcza na maszynach wirtualnych. Ponadto, narzędzia automatyzacji mogą ich używać dynamicznie.

Aby ustawić je dla bieżącej sesji:

export OS_CLOUD=mojachmura
export OS_CLIENT_ID=<twoje-id>
export OS_CLIENT_SECRET=<twój-secret>

Aby uczynić je trwałymi, dodaj te linie do pliku ~/.bashrc lub ~/.zshrc:

echo 'export OS_CLOUD=mojachmura' >> ~/.bashrc
echo 'export OS_CLIENT_ID=<twoje-id>' >> ~/.bashrc
echo 'export OS_CLIENT_SECRET=<twój-secret>' >> ~/.bashrc
source ~/.bashrc

Ta metoda jest przydatna do wdrożeń skryptowych, sesji tymczasowych oraz w przypadku, gdy nie chcesz przechowywać poświadczeń w plikach.

Co można zrobić dalej

Oto kilka artykułów, które używają poświadczeń aplikacji: