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)
- Zainstaluj OpenStackClient na Linux
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ń:
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:
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:
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 + "\""'
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:
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:
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ż:
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: