ทำไมฉันไม่สามารถสร้าง superuser ในอินสแตนซ์ของ AWS Postgresql ได้


16

ฉันมีอินสแตนซ์ AWS EC2 เชื่อมต่อกับอินสแตนซ์ RDS (Postgresql) เมื่อฉันสร้างอินสแตนซ์ RDS ผมบอกว่ามันชื่อผู้ใช้รากของ DB คือ: และรหัสผ่านได้my_user1 password1ตอนนี้ฉันกำลังพยายามสร้างบทบาทและผู้ใช้ระดับสูง แต่มันล้มเหลว:

$ createuser -P -d -s -e my_user2 --host myhost.com -U my_user1
Enter password for new role: XXXYYYZZZ
Enter it again: XXXYYYZZZ
Password: password1
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f999c' SUPERUSER CREATEDB  CREATEROLE INHERIT LOGIN;
createuser: creation of new role failed: ERROR:  must be superuser to create superusers
$

เมื่อฉันทำซ้ำคำสั่งโดยไม่มีการ-sตั้งค่าสถานะมันทำงาน:

$ createuser -P -d -e my_user2 --host myhost.com  -U my_user1
Enter password for new role:
Enter it again:
Password:
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f888c' NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;
$

เห็นได้ชัดว่าmy_user1ไม่มีสิทธิ์ในการสร้างผู้ใช้ขั้นสูง แต่นี่คือผู้ใช้ที่ฉันบอกว่า RDS คือผู้ใช้ที่เป็นผู้ดูแลระบบของฉัน! หากmy_user1ไม่มีสิทธิ์ในการสร้างผู้ใช้ขั้นสูงใครจะเป็นใคร และฉันจะรับชื่อผู้ใช้ / รหัสผ่านจาก AWS ได้อย่างไร


pg_hba.conf บอกว่ารูปแบบการตรวจสอบสิทธิ์นั้นเหมาะสำหรับผู้ใช้ในพื้นที่หรือไม่
drookie

Drookie ไฟล์นี้อยู่ใน RDS instance หรือเปล่า? ฉันยังไม่ได้ SSHed บนเครื่องนั้น
Saqib Ali

@SaqibAli คุณไม่สามารถ SSH เป็นอินสแตนซ์ RDS
ceejayoz

คำตอบ:


23

Amazon อินสแตนซ์ RDS ได้รับการจัดการ ดังนั้นเพื่อป้องกันไม่ให้คุณแยกสิ่งต่าง ๆ เช่นการจำลองแบบผู้ใช้ของคุณ - แม้แต่ผู้ใช้รูทที่คุณตั้งค่าเมื่อคุณสร้างอินสแตนซ์ - จะไม่ได้รับสิทธิ์ superuser อย่างเต็มที่

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html

เมื่อคุณสร้างอินสแตนซ์ DB บัญชีระบบผู้ใช้หลักที่คุณสร้างจะถูกกำหนดให้กับบทบาท rds_superuser บทบาท rds_superuser เป็นบทบาท Amazon RDS ที่กำหนดไว้ล่วงหน้าซึ่งคล้ายกับบทบาท Superg PostgreSQL (ชื่อ postgres แบบกำหนดเองในอินสแตนซ์ในเครื่อง) แต่มีข้อ จำกัด บางประการ เช่นเดียวกับบทบาท PostgreSQL superuser บทบาท rds_superuser มีสิทธิ์มากที่สุดในอินสแตนซ์ฐานข้อมูลของคุณและคุณไม่ควรกำหนดบทบาทนี้ให้กับผู้ใช้เว้นแต่พวกเขาต้องการเข้าถึงอินสแตนซ์ฐานข้อมูลได้มากที่สุด


6
ฉันไม่สามารถสำรองฐานข้อมูลของฉันหากไม่มีการตั้งค่าสถานะผู้ใช้ขั้นpg_dumpสูง มีวิธีแก้ไขปัญหานี้ด้วย rds ที่ aws หรือไม่
chovy

@chovy ลองgrantใช้บทบาทเจ้าของ db กับผู้ใช้ของคุณ
ขัดขวาง

3

หากคุณแสดงสิทธิ์ปัจจุบันของคุณกับ\du+หรือ\dg+คุณจะสังเกตเห็นว่าคุณไม่ได้เป็น superuser แต่เพียงสิทธิ์ได้รับอนุญาตให้สร้างบทบาท, การสร้างฐานข้อมูล ดังนั้นคุณจะไม่ได้รับอนุญาตให้มอบหมายสิทธิ์ของคุณเองให้สูงกว่าสิทธิ์ที่คุณได้รับมอบหมาย

ปกติคุณจะไม่ได้รับสิทธิ์ root หรือ superuser ในสภาพแวดล้อมที่โฮสต์ใด ๆ ฉันขอแนะนำให้คุณหมุนอินสแตนซ์ EC2 ที่กำหนดเองและติดตั้ง PostgreSQL ในพื้นที่เพื่อการควบคุมที่สมบูรณ์


2
มีวิธีการสำรองฐานข้อมูล amazon rds ด้วย pg_dump เป็นอย่างอื่นไม่?
chovy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.