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 https://auth.atman.pl.
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 https://auth.atman.pl jest centralnym punktem zarządzania kontami, które będą używane do logowania do panelu Atman Cloud https://sso.cloud.atman.pl. Docelowo będzie on używany do dostępu do innych usług Atman S.A.
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 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 https://sso.cloud.atman.pl wybrać opcję OpenID Connect i kliknąć Sign in.
Użytkownik zostanie przekierowany na adres: https://auth.atman.pl/oauth/password/xxxxxxxxxxxxxxxxxxxxxxxxx i tam należy wpisać dane logowania SSO.
Następnie użytkownik zostanie przekierowany do panelu Atman Cloud, gdzie może zarządzać zasobami cloud.
Zakładanie subkont użytkowników
Konto superadmina również może zostać użyte do logowania do panelu chmurowego, niemniej jednak zalecamy stworzenie subkont 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 Konta użytkowników w sekcji Zarządzanie.
Po kliknięciu w przycisk Dodaj sub-użytkownika 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.
Po dodaniu nowego użytkownika należy mu zresetować hasło, oraz nadać uprawnienia do projektów w OpenStack. W tym celu należy rozwinąć menu obok przycisku Uprawnienia i wybrać opcję Resetuj hasło.
i w kolejnym kroku potwierdzić, klikając Resetuj.
Po kliknięciu zostanie wysłany mail z wygenerowanym hasłem na adres e-mail podany w profilu użytkownika.
W kolejnym kroku należy nadać użytkownikowi uprawnienia do projektu w Atman Cloud, klikając przycisk Uprawnienia. Pojawi się następujący widok, w którym przy danym projekcie, w linijce Dodaj do usługi należy kliknąć Aktywne.
Obsługa OTP
W celu włączenia obsługi OTP (ang. one time password) należy w panelu w pierwszej kolejności uzupełnić numer telefonu komórkowego klikając w Edycja profilu -> Dane profilu.
a następnie przejść do pozycji Edycja profilu -> Autoryzacja OTP i kliknąć Włącz.
Następnie 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 -> Autoryzacja OTP.
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 TOTP 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, google authenticator w app store) oraz wpisać w formularzu pod kodem QR kod aktywacyjny z aplikacji.
QR code będzie również widoczny do użycia w późniejszym czasie w menu Edycja profilu -> Autoryzacja TOTP.
W celu wyłączenia autoryzacji TOTP, w powyższym menu klikamy przycisk Wyłącz i potwierdzamy w kolejnym kroku:
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 Zarządzanie -> Konta API i następnie kliknąć Dodaj nowe konto oraz w kolejnym oknie Dodaj.
Po kliknięciu Dodaj 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.
W kolejnym kroku należy dodać uprawnienia do projektu w Atman Cloud, tak jak dla każdego innego użytkownika, klikając w pole Aktywne przy projekcie cloud.
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 dla regionu WAW-1:
# poniższych ustawień proszę nie modyfikować !
export OS_AUTH_URL=https://api.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_TYPE="access_token"
export OS_ACCESS_TOKEN_ENDPOINT="https://auth.atman.pl/api/oauth/token"
export OS_PROJECT_DOMAIN_ID="bd17ce926f1e41d39f6768aadf326dcf"
export OS_REGION_NAME="Waw01"
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"
oraz dla nowego regionu WAW-1B:
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.
$ 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.
Dla WAW-1:
provider "openstack" {
tenant_name = "project-name"
user_name = "api-user"
password = "api-key"
auth_url = "https://sso.cloud.atman.pl:5000/keystone-auth-proxy/v3"
region = "Waw01"
}
Dla WAW-1B:
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"
}