Nowe SSO w Atman Cloud ======================== System SSO został stworzony w celu podniesienia bezpieczeństwa logowania do Panelu Atman Cloud. W celu zalogowania się do panelu zarządzania w Atman Cloud poprzez SSO należy w pierwszej kolejności uzyskać dostęp do konta na stronie . Uzyskanie dostępu do logowania --------------------------------- Nazwa konta do powyższego panelu znajduje się w panelu do zarządzania serwerami Atman Cloud. Hasło zostanie wysłane w mailu informującym o założeniu konta. Konto jest w chwili obecnej tworzone przez pracowników Atmana na życzenie klienta. Przy pierwszym logowaniu będzie konieczna zmiana hasła. Opis funkcjonalności panelu auth.atman.pl ---------------------------------------------- Panel jest centralnym punktem zarządzania kontami, które będą używane do logowania do panelu Atman Cloud . Docelowo będzie on używany do dostępu do innych usług Atman Sp. z o.o. Panel jest oparty o rozwiązanie **OAuth** w połączeniu **OpenID Connect**, który jest otwartym standardem w kwestii autoryzacji i systemów SSO (ang. **Single Sign On**). Panel pozwala na włączenie podwójnej, a dla klientów nastawionych na maksymalne bezpieczeństwo, nawet potrójnej autoryzacji, ponieważ istnieje możliwość jednoczesnego włączenia **TOTP** oraz **OTP**. **Wymagania dotyczące hasła to:** - minimalna długość hasła 10 znaków - ważność hasła: 30 dni - jeden znak specjalny - jedna cyfra - jedna duża litera - hasło nie może być takie same, jak 5 haseł wstecz - login i hasło nie mogą być do siebie podobne ([dystans Levenshteina](https://pl.wikipedia.org/wiki/Odleg%C5%82o%C5%9B%C4%87_Levenshteina)) dla loginu i hasła ustawiony jest na 4) Hasło jest ważne 30 dni, na 7, 5 i 2 dni przed wygaśnięciem użytkownik dostanie powiadomienie mailowe o konieczności zmiany hasła. Konto jest blokowane po 30 dniach nieaktywności (należy zalogować się przynajmniej raz w okresie 30 dni). Logowanie do panelu Atman Cloud poprzez SSO ---------------------------------------------- W tym celu należy na stronie wybrać opcję **OpenID Connect** i kliknąć **Sign in**. ![pic1](images/SSOv2_OS_1.png) Użytkownik zostanie przekierowany na adres: https://auth.atman.pl/oauth/password/xxxxxxxxxxxxxxxxxxxxxxxxx i tam należy wpisać dane logowania SSO. ![pic2](images/SSOv2_new_1_logowanie.png) Następnie użytkownik zostanie przekierowany do panelu Atman Cloud, gdzie może zarządzać zasobami cloud. ![pic3](images/SSOv2_OS_3.png) Zakładanie kont użytkowników w SSO ------------------------------------ Konto **superadmina** również może zostać użyte do logowania do panelu chmurowego, niemniej jednak zalecamy stworzenie kont (w poprzedniej wersji Atman SSO były one nazywane „subkontami”) dla użytkowników firmy w celu przydzielania im dostępu do odpowiednich projektów. W tym celu należy z poziomu superadmina kliknąć w menu **Użytkownicy i kontakty**. ![pic4](images/SSOv2_new_uzytkownicy_i_kontakty_2.png) **Na tej stronie, można dodać użytkowników na dwa sposoby:** 1) **Dla nowego użytkownika** należy użyć opcji **Dodaj użytkownika**. W wyświetlonym formularzu należy poprawnie wypełnić wszystkie pola, w szczególności mail i numer telefonu, ponieważ na maila będzie wysłana informacja o haśle początkowym dla użytkownika, natomiast numer telefonu będzie używany przy autoryzacji OTP. W sekcji poniżej należy także **nadać uprawnienia**: - w sekcji **Uprawnienia** znajdują się uprawnienia, które są **nadawane klientowi i mogą dotyczyć wszystkich jego usług**, - w sekcji **Uprawnienia do usług** znajdują się uprawnienia, które są **przydzielane do konkretnych usług** posiadanych przez klienta. 2) Dla **istniejącego kontaktu**, który jeszcze nie posiada konta użytkownika **istnieje możliwość utworzenia użytkownika**. W tabeli **Użytkownicy i kontakty**, w prawym menu wyświetlanym dla każdego rekordu jest opcja **Dodaj użytkownika**. Po kliknieciu na nią, na podany adres e-mail zostanie wysłana wiadomość z hasłem tymczasowym do portalu. Po zalogowaniu się na portal za jego pomocą, konto użytkownika zostanie aktywowane. ![pic5](images/SSOv2_new_3_tworzenie_subkont.png) W kolejnym kroku należy **nadać użytkownikowi uprawnienia do projektu** w Atman Cloud, przechodząc do sekcji **Uprawnienia**. Pojawi się następujący widok, w którym można wybrać uprawnienia i do których projektów zostaną przyznane. ![pic6](images/SSOv2_new_4_tworzenie_subkont.png) ![pic7](images/SSOv2_new_5_uprawnienia.png) ![pic8](images/SSOv2_new_5_2_uprawnienia.png) W sekcji **Użytkownicy i kontakty**, każdy z rekordów może mieć **wartości** w kolumnie **Użytkownik**: - **brak użytkownika** – kontakt nie posiada przypisanego konta użytkownika, - **oczekuje na rejestrację** – wartość prezentowana w przypadku, gdy konto użytkownika jest w trakcie tworzenia. Na adres e-mail kontaktu został wysłana wiadomość z hasłem tymczasowym do konta. Ten status zmieni się po zalogowaniu się. - **[nazwa użytkownika]** – istnieje konto użytkownika na które można się zalogować (poniżej opisany jako „**tester**„). ![pic9](images/SSOv2_new_uzytkownicy_i_kontakty_4_statusy.png) Po dodaniu nowego użytkownika istnieje **możliwość zresetowania mu hasła**. W tym celu należy rozwinąć menu obok przycisku **Uprawnienia** i wybrać opcję **Zresetuj hasło**. ![pic10](images/SSOv2_new_reset_hasla.png) i w kolejnym kroku potwierdzić, klikając **Resetuj**. ![pic11](images/SSOv2_new_reset_hasla_2.png) Po kliknięciu zostanie wysłany mail z wygenerowanym hasłem na adres e-mail podany w profilu użytkownika. ![pic12](images/SSOv2_new_reset_hasla_3.png) Obsługa OTP ------------ W celu włączenia obsługi **OTP** (ang. **One Time Password**) należy przejść do **Edycja profilu -> Uwierzytelnianie 2FA e-mailem** lub **Uwierzytelnianie 2FA SMS-em** zależnie od preferowanego kanału uwierzytelniania. **Domyślnie aktywna** jest opcja **Uwierzytelnianie 2FA e-mailem** ale **istnieje możliwość włączenia kolejnych kanałów** przy czym **jeden** z aktywnych kanałów **musi zostać ustawiony jako domyślny**. ![pic13](images/SSOv2_new_uprawnienia_subkont_2.png) ![pic14](images/SSOv2_new_subkonto_uwierzytelnianie_emailem.png) ![pic15](images/SSOv2_new_subkonto_uwierzytelnianie_telefon.png) a następnie kliknąć **Włącz**. W kolejnym kroku należy wprowadzić poprawny kod, otrzymany SMSem i kliknąć ponownie **Włącz**. W celu **wyłączenia obsługi OTP** należy kliknąć w przycisk wyłącz w menu: **Edycja profilu** i kliknąć opcję **Wyłącz** wybranego kanału uwierzytelniania. ![pic16](images/SSOv2_new_wylaczanie_uwierzytelniania.png) Należy pamiętać o tym, że kody OTP obowiązują zarówno w momencie logowania do panelu zarządzania kontem, jak również w momencie logowania do panelu zarządzania Atman Cloud. Obsługa TOTP -------------- W celu **włączenia obsługi TOTP** należy przejść do pozycji **Edycja profilu -> Autoryzacja 2FA aplikacją** i kliknąć **Włącz**, pojawi się **okienko z kodem QR**, który należy zeskanować w aplikacji typu **Google Authenticator** (Google Authenticator w [Google Play](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US), Google Authenticator w [App Store](https://apps.apple.com/pl/app/google-authenticator/id388497605?l=pl) oraz wpisać w formularzu pod kodem QR kod aktywacyjny z aplikacji. ![pic17](images/SSOv2_new_subkonto_uwierzytelnianie_QR.png) QR code będzie również widoczny do użycia w późniejszym czasie w menu **Edycja profilu -> Autoryzacja 2FA aplikacją**. W celu **wyłączenia autoryzacji TOTP**, w menu **Edycja profilu** klikamy przycisk **Wyłącz** i potwierdzamy w kolejnym kroku: ![pic18](images/SSOv2_new_wylaczanie_uwierzytelniania_potwierdzenie.png) Należy pamiętać o tym, że kody TOTP obowiązują zarówno w momencie logowania do panelu zarządzania kontem, jak również w momencie logowania do panelu zarządzania Atman Cloud. Konta API ----------- Konta API służą do zarządzania środowiskiem cloud poprzez **CLI** lub z poziomu systemów do automatyzacji, typu **Terraform** lub **Heat**. W celu założenia konta API należy **z poziomu admina firmy** kliknąć w sekcji **Użytkownicy API** i następnie kliknąć **Utwórz konto API**. ![pic19](images/SSOv2_new_6_API.png) Należy wypełnić pola **Suffix** oraz **Opis** i nacisnąć **Zapisz**. ![pic20](images/SSOv2_new_6_1_API_tworzenie_konta.png) Dane wypełnione w polu „**Suffix**” pojawią się na końcu nazwy użytkownika API, a „**Opis**” służy do ułatwienia identyfikacji tworzonych użytkowników API. ![pic21](images/SSOv2_new_6_2_API_tworzenie_konta.png) Po kliknięciu **Zapisz** pojawi się okno z danymi (**Secret** oraz **Key**), które **należy zapisać**, ponieważ **nie będą nigdzie indziej widoczne**, jak tylko w tym widoku. ![pic22](images/SSOv2_new_6_4_API_tworzenie_konta_potwierdzenie.png) W kolejnym kroku należy dodać uprawnienia do projektu w Atman Cloud dla konta API, tak jak dla każdego innego użytkownika, klikając w wyprane pozycje w sekcji **Uprawnienia** dla wybranych projektów w sekcji **Uprawnienia do usług**. ![pic23](images/SSOv2_new_6_2_API_uprawnienia.png) Konfiguracja pliku openrc dla konta API ----------------------------------------- By móc skorzystać z konta stworzonego w powyższym kroku, należy w następujący sposób ustawić zmienne środowiskowe w pliku **openrc**, który użyjemy w poleceniu ``source`` ``` export OS_AUTH_URL=https://waw1-b.cloud.atman.pl:5000/v3 export OS_IDENTITY_PROVIDER="sso_idp" export OS_PROTOCOL="jwt_token" export OS_AUTH_TYPE="v3oidcclientcredentials" export OS_ACCESS_TOKEN_ENDPOINT="https://auth.atman.pl/api/oauth/token" export OS_PROJECT_DOMAIN_ID="ceab97173f4e43fab1078f2615bcd15c" export OS_REGION_NAME="ATMAN_WAW1_B" export OS_INTERFACE=public export OS_IDENTITY_API_VERSION=3 #poniższe ustawienia są zmienne export OS_CLIENT_ID="api_xxxxxxxxx" export OS_CLIENT_SECRET="xxxxxxxxxxxxxxxxxxxxxxx" export OS_PROJECT_ID="3f12xxxxxxxxxxxxxxx" export OS_PROJECT_NAME="test-xxxxxxxxxx-1" export OS_USERNAME="sub.xxxxxx" ``` ``OS_CLIENT_ID`` oraz ``OS_CLIENT_SECRET`` uzyskaliśmy w momencie zakładania konta API, natomiast ``OS_PROJECT_ID``, ``OS_USERNAME`` oraz ``OS_PROJECT_NAME`` uzyskujemy z poziomu panelu Horizon, po kliknięciu w menu **Project -> API Access**, następnie w przycisk **View Credentials**. ![pic24](images/SSOv2_OS_4.png) Następnie możemy skorzystać z tak przygotowanego pliku, by wywołać komendy ``openstack``, np.: ``` $ source ~/openrc $ openstack server list +--------------------------------------+------------+--------+--------------------------+-------+--------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+------------+--------+--------------------------+-------+--------+ | b837a3fe-XXXX-XXXX-XXXX-XXXXXXXXXXXX | sso-ubu-20 | ACTIVE | int-sso=x.x.x.x, y.y.y.y | | m1.c1 | +--------------------------------------+------------+--------+--------------------------+-------+--------+ $ ``` Klient CLI ``python-openstackclient`` (narzędzie **openstack**) w systemach Linux można zainstalować poprzez ``pip`` lub z repozytoriów paczek systemowych np. poprzez ``apt`` (**Ubuntu** i podobne) lub ``dnf`` (**RedHat** i podobne). Korzystanie z konta API w Terraform ------------------------------------- W celu skorzystania z **użytkownika api** w **terraformie** przy konfiguracji providera należy zamienić **auth_url** na podany w poniższym przykładzie. W polu ``user_name`` podać w **nazwę użytkownika api** a w polu ``password`` **klucz** wygenerowany przy tworzeniu tego użytkownika. ``` provider "openstack" { tenant_name = "project-name" user_name = "api-user" password = "api-key" auth_url = "https://waw1-b.cloud.atman.pl:5000/keystone-auth-proxy/v3" region = "ATMAN_WAW1_B" } ```