Amazon RDS - การควบคุมการเข้าถึงฐานข้อมูล

ในการเข้าถึงอินสแตนซ์ Amazon RDS DB ผู้ใช้ต้องมีสิทธิ์เฉพาะ สิ่งนี้กำหนดค่าโดยใช้ AWS IAM (Identity and Access management) ในบทช่วยสอนนี้เราจะดูวิธีการกำหนดค่านี้

การกำหนดค่าเกี่ยวข้องกับสองส่วน

  • Authentication

  • การควบคุมการเข้าถึง

มันเกี่ยวข้องกับการสร้างชื่อผู้ใช้รหัสผ่านและการสร้างคีย์การเข้าถึงสำหรับผู้ใช้ ด้วยความช่วยเหลือของรหัสการเข้าถึงทำให้สามารถเข้าถึงบริการ AWS RDS แบบเป็นโปรแกรมได้ เครื่องมือ SDK และ CLI ใช้คีย์การเข้าถึงเพื่อลงชื่อเข้าใช้แบบเข้ารหัสด้วยคำขอ

เรายังสามารถใช้ IAM Role เพื่อพิสูจน์ตัวตนผู้ใช้ แต่บทบาทดังกล่าวไม่ได้เชื่อมโยงกับผู้ใช้เฉพาะใด ๆ แต่ผู้ใช้ทุกคนสามารถรับบทบาทชั่วคราวและทำงานที่ต้องการให้เสร็จสิ้น หลังจากงานจบบทบาทสามารถเพิกถอนได้และผู้ใช้สูญเสียความสามารถในการตรวจสอบสิทธิ์

หลังจากตรวจสอบผู้ใช้แล้วนโยบายที่แนบมากับผู้ใช้นั้นจะกำหนดประเภทของงานที่ uer สามารถดำเนินการได้ ด้านล่างนี้เป็นตัวอย่างของนโยบายที่อนุญาตให้สร้างอินสแตนซ์ RDS DB บนอินสแตนซ์ t2.micro สำหรับ DB Engine MySQL

{
    "Version": "2018-09-11",
    "Statement": [
        {
            "Sid": "AllowCreateDBInstanceOnly",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:123456789012:db:test*",
                "arn:aws:rds:*:123456789012:og:default*",
                "arn:aws:rds:*:123456789012:pg:default*",
                "arn:aws:rds:*:123456789012:subgrp:default"
            ],
            "Condition": {
                "StringEquals": {
                    "rds:DatabaseEngine": "mysql",
                    "rds:DatabaseClass": "db.t2.micro"
                }
            }
        }
    ]
}

การดำเนินการกับทรัพยากร RDS ใด ๆ

ในตัวอย่างด้านล่างเราเห็นนโยบายที่อนุญาตให้อธิบายการดำเนินการกับทรัพยากร RDS ใด ๆ สัญลักษณ์ * ใช้เพื่อแสดงทรัพยากรใด ๆ

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowRDSDescribe",
         "Effect":"Allow",
         "Action":"rds:Describe*",
         "Resource":"*"
      }
   ]
}

ไม่อนุญาตให้ลบอินสแตนซ์ DB

นโยบายด้านล่างนี้ไม่อนุญาตให้ผู้ใช้ลบอินสแตนซ์ DB เฉพาะ

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"DenyDelete1",
         "Effect":"Deny",
         "Action":"rds:DeleteDBInstance",
         "Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}