2017-06-23 19 views
0

私たちは、PostgreSQLデータベースへの第三者のソフトウェアアクセスを許可しました。請求の紛争の後、私たちはこの会社との関係を切り離しましたが、ユーザーを削除することはできません。すぐにこのユーザーを削除する必要がありますが、それを行う方法を把握することはできません。ここでは、我々はそれを行うにしようとすると、私たちが見ているものの一部です:セキュリティリスクを引き起こすpostgresqlユーザを削除できません

prod=> drop user evil_user; 
ERROR: role "evil_user" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role evil_user 

prod=> reassign owned by evil_user to root; 
ERROR: permission denied to reassign objects 

prod=> drop role evil_user; 
ERROR: role "evil_user" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role evil_user 
         ^
prod=> REVOKE ALL ON ALL TABLES IN SCHEMA PUBLIC FROM evil_user; 
REVOKE 

prod=> drop role evil_user; 
ERROR: role "evil_user" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role evil_user 

prod=> REVOKE ALL ON SCHEMA public FROM evil_user; 
REVOKE 

prod=> REVOKE ALL ON DATABASE prod FROM evil_user; 
REVOKE 

prod=> reassign owned by evil_user to root; 
ERROR: permission denied to reassign objects 

prod=> drop user evil_user; 
ERROR: role "evil_user" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role evil_user 
            ^
prod=> ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES  FROM evil_user; 
ALTER DEFAULT PRIVILEGES 

prod=> drop user evil_user; 
ERROR: role "evil_user" cannot be dropped because some objects depend on it 
DETAIL: owner of default privileges on new relations belonging to role evil_user 

prod=> reassign owned by evil_user to root; 
ERROR: permission denied to reassign objects 

私たちは、当社のデータベースのうち、これらの人々を取得する必要があります。いくつかの理由から、我々は簡単に新しいPostgresのインスタンスに移動することはできません。

select * from information_schema.role_table_grants where grantee='evil_user'; 
+0

簡単にバックアップを取ることができたら、今すぐそれをしてください。 – halfer

+0

あなたはコメントでAWS RDSを述べました。あなたはポストグルやレッドシフトにいますか? –

答えて

0

、これは使ってみてくださいpostgresスーパーユーザアカウント(通常はユーザpostgres)としてこの操作を実行する必要があります。

+0

このdrop user cascadeコマンドで構文エラーが発生しました。 prod =>ユーザーを削除するevil_userカスケード; エラー: "カスケード"またはその付近の構文エラー LINE 1:ユーザーを削除するevil_userカスケード。 ^ select文は機能しますが、結果は0行です。 –

+0

Postgresの 'DROP USER'には' CASCADE'演算子は付いていません。 –

1
prod=> reassign owned by evil_user to root; 
    ERROR: permission denied to reassign objects 

あなたを: あなたは、そのユーザが所有しているかのオブジェクトをチェックしたい場合はdrop user evil_user cascade;

、これを使用する:あなただけのユーザーをドロップしたい場合は

+0

私はマスターユーザー(「root」と呼ばれます)としてログインしています。 'postgres'ユーザとしてコマンドを実行するには?私はグーグルを試みたが、運はなかった。 –

+0

あなたはrootではなく、上記の 'prod'ユーザとしてログインしています。ユーザ 'root'がスーパーユーザ権限を持っているかどうかを見るには' \ du root'を使います。どのユーザがログインしているのかを 'SELECT current_user; 'として確認するには –

+0

私はrootにログインしています。データベース名はprodです。属性は「ロールの作成、DBの作成、無限になるまで有効なパスワード」です。 "{rds_superuser}"のメンバー –

関連する問題