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"
}
]
}