Udzielanie uprawnień w usłudze Azure SQL Database for PostgreSQL
Aby umożliwić użytkownikom dostęp do baz danych hostowanych na serwerze usługi Azure Database for PostgreSQL, należy utworzyć role (użytkowników) i udzielić lub odmówić uprawnień do obiektów bazy danych.
Tworzenie użytkowników bazy danych w usłudze Azure Database for PostgreSQL
W narzędziu Azure Data Studio (lub preferowanym narzędziu klienckim) połącz się z serwerem usługi Azure Database for PostgreSQL przy użyciu poświadczeń logowania administratora.
Z odpowiednią bazą danych jako bieżącą bazą danych użyj
CREATE ROLE
odpowiednich opcji, aby utworzyć nową rolę (użytkownika).Na przykład następujące zapytanie:
- Tworzy nową bazę danych o nazwie testdb.
- Tworzy nowego użytkownika z silnym hasłem.
- Przyznaje uprawnienia łączenia z bazą danych testdb.
CREATE DATABASE testdb; CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>'; GRANT CONNECT ON DATABASE testdb TO <db_user>;
Aby wypróbować zapytanie, możesz zastąpić symbole zastępcze informacjami o użytkowniku.
Następnie możesz przyznać więcej uprawnień do obiektów w bazie danych. Na przykład:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
Składnia TWORZENIA ROLI to:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
Opcja WHERE może być:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
Opcjonalne parametry:
- SUPERUŻYTKOWNIK | NOSUPERUSER — nie można przypisać uprawnień ADMINISTRATORA w usłudze Azure Database for PostgreSQL. Jeśli nie zostanie określony, wartość domyślna to NOSUPERUSER.
- CREATEDB | NOCREATEDB — czy rola może tworzyć bazy danych. Wartość domyślna to NOCREATEDB.
- CREATEROLE | NOCREATEROLE — czy rola może tworzyć nowe role, czyli wykonywać TWORZENIE ROLI. Jeśli uprawnienie CREATEROLE zostanie przyznane, rola może również zmienić i usunąć inne role. NOCREATEROLE jest wartością domyślną.
- DZIEDZICZ | NOINHERIT — czy rola dziedziczy uprawnienia ról, jest bezpośrednim lub pośrednim elementem członkowskim. Dziedzicz jest wartością domyślną.
- LOGOWANIE | NOLOGIN — czy rola może się zalogować. Rola z atrybutem LOGIN jest użytkownikiem bazy danych. Role bez atrybutu LOGIN mogą służyć do zarządzania uprawnieniami bazy danych. NOLOGIN jest wartością domyślną.
- REPLIKACJA | NOREPLICATION — czy rola jest rolą replikacji. Rola musi mieć ten atrybut, aby nawiązać połączenie z serwerem w trybie replikacji i utworzyć lub usunąć miejsca replikacji. Atrybut REPLICATION jest rolą uprzywilejowaną, która powinna być używana tylko do replikacji. NOREPLICATION jest wartością domyślną. Aby utworzyć tę rolę, musisz być członkiem azure_pg_admin.
- BYPASSRLS | NOBYPASSRLS — czy rola pomija wszystkie zasady zabezpieczeń na poziomie wiersza.
- LIMIT POŁĄCZEŃ connlimit — określa, ile połączeń współbieżnych może wykonywać rola, która może się zalogować. -1 jest wartością domyślną. Ten parametr nie ogranicza liczby połączeń współbieżnych.
- [ ENCRYPTED ] HASŁO 'password'| PASSWORD NULL — ustawia hasło roli. Hasło jest używane tylko przez role z atrybutem LOGIN. Jeśli nie określono hasła, hasło ma wartość NULL, a uwierzytelnianie hasłem kończy się niepowodzeniem. Alternatywnie jawnie podaj wartość PASSWORD NULL.
- VALID UNTIL 'timestamp' - data i godzina, po której hasło roli nie jest już prawidłowe. W przypadku pominięcia hasła nie ma limitu czasu.
- IN ROLE role_name — co najmniej jedna rola, do której jest dodawana nowa rola jako nowy element członkowski. Nie ma możliwości dodania nowej roli jako administratora; użyj polecenia GRANT.
- W GRUPIE role_name przestarzałą alternatywę dla ROLI IN.
- ROLA role_name — co najmniej jedna rola jest dodawana jako członkowie nowej roli. (Ta zmiana powoduje, że nowa rola jest rolą grupy).
- ADMINISTRATOR role_name — klauzula ADMIN jest podobna do ROLI, ale nazwane role są dodawane do nowej roli Z OPCJĄ ADMINISTRATORA, dając im prawo do przyznania członkostwu w tej roli innym osobom.
Uwaga
Atrybuty roli można zmienić za pomocą funkcji ALTER ROLE i usunąć rolę z funkcją DROP ROLE.