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 APIi 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  |
+--------------------------------------+------------+--------+--------------------------+-------+--------+
$

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"
}