Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak utworzyć niestandardowe konto postgreSQL z minimalnymi uprawnieniami wymaganymi do odnajdywania i oceny w usłudze Azure Migrate.
Przed rozpoczęciem rozpoznawania skonfiguruj aplikację Azure Migrate przy użyciu kont PostgreSQL, aby połączyć się z wystąpieniami PostgreSQL. Aby uniknąć korzystania z kont superużytkowników, możesz utworzyć konto niestandardowe z uprawnieniami wymaganymi do zbierania metadanych na potrzeby odnajdywania i oceny. Dodaj to konto niestandardowe w konfiguracji urządzenia na potrzeby odnajdywania i oceny bazy danych PostgreSQL. Aby uprościć konfigurację, możesz użyć narzędzia aprowizacji kont o najniższych uprawnieniach podanych w tej dokumentacji.
Wymagania wstępne
- Uruchomiony i dostępny serwer PostgreSQL.
- Dostęp superużytkownika do wystąpienia bazy danych PostgreSQL.
- Utworzenie projektu Azure Migrate.
Minimalne wymagane uprawnienia
Aby zapewnić bezpieczeństwo i zgodność w usłudze Azure Migrate, utwórz użytkownika postgreSQL z tylko niezbędnymi uprawnieniami — minimalizując ryzyko nieautoryzowanego dostępu lub niezamierzonych zmian.
Na podstawie wymagań usługi Azure Migrate wymagane są minimalne uprawnienia:
Uprawnienia na poziomie bazy danych
-
CONNECT: Dostęp do baz danych -
pg_read_all_settings: Odczytywanie parametrów konfiguracji serwera -
pg_read_all_stats: Dostęp do statystyk bazy danych -
pg_monitor: Monitorowanie metryk wydajności bazy danych
Implementacja skryptu SQL
Zapisz następującą zawartość jako CreateUser.sql:
-- PostgreSQL Script to Create a Least-Privilege User for Azure Migrate
-- Usage: Replace :username and :password with actual values when executing.
-- Parameters:
-- :username - The username for the new user
-- :password - The password for the new user
-- Check if the user already exists
SELECT CASE
WHEN EXISTS (SELECT 1 FROM pg_roles WHERE rolname = :'username')
THEN 'User ' || :'username' || ' already exists, skipping creation'
ELSE
'User ' || :'username' || ' does not exist, proceeding with creation'
END AS user_check;
-- Only proceed if user doesn't exist
SELECT NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = :'username') AS should_create \gset
\if :should_create
BEGIN;
-- Create the user with minimal privileges
CREATE USER :"username" WITH PASSWORD :'password' LOGIN
NOSUPERUSER NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;
-- Grant CONNECT privilege on all non-template databases
SELECT 'GRANT CONNECT ON DATABASE ' || quote_ident(datname) || ' TO ' || :'username' || ';'
FROM pg_database WHERE datistemplate = false; \gexec
-- Grant required monitoring and read permissions
GRANT pg_read_all_settings TO :"username";
GRANT pg_read_all_stats TO :"username";
GRANT pg_monitor TO :"username";
-- Log the user creation
SELECT 'Azure Migrate user ' || :'username' || ' created successfully with least privileges.' AS result;
COMMIT;
\endif
-- Usage instructions:
-- Replace :username and :password with actual values using psql variables:
-- psql -v username=myuser -v password=mypassword -f CreateUser.sql
Uwaga / Notatka
Ten użytkownik ma tylko minimalne uprawnienia wymagane do odnajdywania i oceny usługi Azure Migrate.
- Użytkownik nie może tworzyć baz danych, ról ani replikować.
- Zawsze używaj silnych haseł i postępuj zgodnie z zasadami zabezpieczeń organizacji.
Instrukcje użycia
Wykonaj następujące kroki, aby użyć podanego skryptu SQL:
- Zapisz skrypt jako
CreateUser.sql. - Zastąp symbole zastępcze dla nazwy użytkownika i hasła na żądane wartości, używając zmiennych
psql.
Wykonywanie skryptu
Uruchom skrypt przy użyciu narzędzia wiersza polecenia PostgreSQL (psql) z uprawnieniami administratora. Zastąp symbole zastępcze rzeczywistymi wartościami:
psql -h <hostname> -p <port> -d <database> -U <superuser> \
-v username=<<Az Migrate username>> \
-v password='your_secure_password' \
-f CreateUser.sql
Zweryfikuj tworzenie użytkownika
Aby potwierdzić, że użytkownik został utworzony i przypisano odpowiednie uprawnienia, uruchom następujące zapytania:
-- Check if the user exists and review key attributes
SELECT usename, usecreatedb, usesuper, userepl
FROM pg_catalog.pg_user
WHERE usename = '<<Az Migrate username>>';
Wynik powinien pokazywać false dla usecreatedb, usesuper, i userepl.
Weryfikowanie udzielonych uprawnień opartych na rolach
Sprawdź, czy użytkownik ma niezbędne role monitorowania, uruchamiając następujące zapytania. Dzięki temu konto ma tylko wymagane uprawnienia do operacji usługi Azure Migrate.
-- Verify the user exists
SELECT rolname
FROM pg_roles
WHERE rolname = '<<Az Migrate username>>';
-- Check membership in monitoring roles
SELECT r.rolname AS granted_role
FROM pg_auth_members m
JOIN pg_roles r ON m.roleid = r.oid
WHERE m.member = (SELECT oid FROM pg_roles WHERE rolname = '<<Az Migrate username>>');
Po uruchomieniu tych zapytań powinien zostać wyświetlony komunikat, że użytkownik istnieje i ma tylko wymagane uprawnienia do odnajdywania i oceny usługi Azure Migrate.
Rozważania
Używaj konta PostgreSQL z najniższymi uprawnieniami wyłącznie dla usługi Azure Migrate, regularnie przeglądaj uprawnienia, obracaj poświadczenia, monitoruj aktywność i wyłączaj konto, gdy nie jest już potrzebne.
- Zastąp
<<Az Migrate username>>i<PASSWORD>wybraną nazwą użytkownika i silnym hasłem dla użytkownika o minimalnych uprawnieniach. - Uruchom skrypt z uprawnieniami administratora, ponieważ tworzenie użytkowników i przypisywanie ról wymaga podwyższonego poziomu dostępu.
- Przed wykonaniem skryptu upewnij się, że instancja PostgreSQL jest uruchomiona i dostępna.
- Przetestuj skrypt w środowisku deweloperskim lub przejściowym przed użyciem środowiska produkcyjnego.
- Postępuj zgodnie z najlepszymi rozwiązaniami w zakresie zabezpieczeń organizacji dotyczącymi złożoności haseł i zarządzania nimi.
- Po wykonaniu skryptu przejrzyj przyznane uprawnienia, aby upewnić się, że spełniają wymagania dotyczące zabezpieczeń.
- Jeśli wystąpią problemy, zobacz dokumentację bazy danych PostgreSQL lub skontaktuj się z administratorem bazy danych, aby uzyskać pomoc techniczną.