SSO w Cloud ATMAN
Wstęp
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 cloud ATMAN 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 Dostęp 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_ID
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
:
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 |
+--------------------------------------+------------+--------+--------------------------+-------+--------+
$
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"
}