Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie ein benutzerdefiniertes PostgreSQL-Konto mit den mindestberechtigungen erstellen, die für Discovery und Assessment in Azure Migrate erforderlich sind.
Konfigurieren Sie vor dem Starten der Ermittlung die Azure Migrate-Appliance mit PostgreSQL-Konten, um eine Verbindung mit Ihren PostgreSQL-Instanzen herzustellen. Um die Verwendung von Superuserkonten zu vermeiden, können Sie ein benutzerdefiniertes Konto mit nur den Berechtigungen erstellen, die zum Sammeln von Metadaten für die Ermittlung und Bewertung erforderlich sind. Fügen Sie dieses benutzerdefinierte Konto in der Appliance-Konfiguration für PostgreSQL Discovery und Assessment hinzu. Sie können das bereitstellungshilfsprogramm für am wenigsten privilegierte Konten verwenden, das in dieser Dokumentation bereitgestellt wird, um das Setup zu vereinfachen.
Voraussetzungen
- Ein ausgeführter und zugänglicher PostgreSQL-Server.
- Superuser-Zugriff auf die PostgreSQL-Instanz.
- Ein Azure Migrate-Projekt eingerichtet.
Erforderliche Mindestberechtigungen
Um Die Sicherheit und Compliance in Azure Migrate sicherzustellen, erstellen Sie einen PostgreSQL-Benutzer mit nur den erforderlichen Berechtigungen – minimieren Sie Risiken für nicht autorisierten Zugriff oder unbeabsichtigte Änderungen.
Basierend auf den Anforderungen von Azure Migrate sind die erforderlichen Mindestberechtigungen:
Berechtigungen auf Datenbankebene
-
CONNECT: Zugriff auf Datenbanken -
pg_read_all_settings: Lesen von Serverkonfigurationsparametern -
pg_read_all_stats: Zugriff auf Datenbankstatistiken -
pg_monitor: Überwachen von Datenbankleistungsmetriken
SQL-Skriptimplementierung
Speichern Sie den folgenden Inhalt unter 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
Hinweis
Dieser Benutzer verfügt nur über die mindestberechtigungen, die für Azure Migrate-Ermittlung und -Bewertung erforderlich sind.
- Der Benutzer kann keine Datenbanken, Rollen erstellen oder replizieren.
- Verwenden Sie immer sichere Kennwörter, und befolgen Sie die Sicherheitsrichtlinien Ihrer Organisation.
Verwendungsanweisungen
Führen Sie die folgenden Schritte aus, um das bereitgestellte SQL-Skript zu verwenden:
- Speichern Sie das Skript als
CreateUser.sql. - Ersetzen Sie die Platzhalter für Benutzername und Kennwort durch die gewünschten Werte mithilfe von
psqlVariablen.
Ausführen des Skripts
Führen Sie das Skript mithilfe des PostgreSQL-Befehlszeilentools (psql) mit Superuserberechtigungen aus. Ersetzen Sie die Platzhalter durch die tatsächlichen Werte:
psql -h <hostname> -p <port> -d <database> -U <superuser> \
-v username=<<Az Migrate username>> \
-v password='your_secure_password' \
-f CreateUser.sql
Benutzererstellung überprüfen
Führen Sie die folgenden Abfragen aus, um zu bestätigen, dass der Benutzer erstellt und den richtigen Berechtigungen zugewiesen wurde:
-- Check if the user exists and review key attributes
SELECT usename, usecreatedb, usesuper, userepl
FROM pg_catalog.pg_user
WHERE usename = '<<Az Migrate username>>';
Das Ergebnis sollte false für usecreatedb, usesuper, und userepl zeigen.
Überprüfen der gewährten rollenbasierten Berechtigungen
Überprüfen Sie, ob der Benutzer über erforderliche Überwachungsrollen verfügt, indem Sie die folgenden Abfragen ausführen. Dadurch wird sichergestellt, dass das Konto nur über die erforderlichen Berechtigungen für Azure Migrate-Vorgänge verfügt.
-- 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>>');
Nachdem Sie diese Abfragen ausgeführt haben, sollten Sie sehen, dass der Benutzer vorhanden ist und nur über die erforderlichen Berechtigungen für Azure Migrate-Ermittlung und -Bewertung verfügt.
Überlegungen
Verwenden Sie ein PostgreSQL-Konto mit minimalen Rechten ausschließlich für Azure Migrate, überprüfen Sie regelmäßig die Berechtigungen, wechseln Sie regelmäßig die Anmeldeinformationen, überwachen Sie die Aktivitäten, und deaktivieren Sie das Konto, wenn es nicht mehr benötigt wird.
- Ersetzen Sie
<<Az Migrate username>>und<PASSWORD>durch Ihren gewählten Benutzernamen und ein sicheres Passwort für den Benutzer mit den geringsten Berechtigungen. - Führen Sie das Skript mit Superuserberechtigungen aus, da das Erstellen von Benutzern und Zuweisen von Rollen einen erhöhten Zugriff erfordert.
- Vergewissern Sie sich, dass Ihre PostgreSQL-Instanz ausgeführt und zugänglich ist, bevor Sie das Skript ausführen.
- Testen Sie das Skript in einer Entwicklungs- oder Stagingumgebung vor der Produktionsverwendung.
- Befolgen Sie die bewährten Methoden für die Sicherheit Ihrer Organisation für die Kennwortkomplexität und -verwaltung.
- Überprüfen Sie nach der Skriptausführung die erteilten Berechtigungen, um sicherzustellen, dass sie Ihre Sicherheitsanforderungen erfüllen.
- Wenn Probleme auftreten, lesen Sie die PostgreSQL-Dokumentation , oder wenden Sie sich an Ihren Datenbankadministrator, um Support zu benötigen.