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

DynamoDB ใช้หนังสือรับรองที่คุณระบุเพื่อพิสูจน์ตัวตนคำขอ ข้อมูลรับรองเหล่านี้จำเป็นและต้องมีสิทธิ์สำหรับการเข้าถึงทรัพยากร AWS สิทธิ์เหล่านี้ครอบคลุมแทบทุกด้านของ DynamoDB ไปจนถึงคุณสมบัติย่อยของการทำงานหรือฟังก์ชันการทำงาน

ประเภทของสิทธิ์

ในส่วนนี้เราจะพูดถึงสิทธิ์ต่างๆและการเข้าถึงทรัพยากรใน DynamoDB

การพิสูจน์ตัวตนผู้ใช้

ในการสมัครใช้งานคุณได้ระบุรหัสผ่านและอีเมลซึ่งทำหน้าที่เป็นข้อมูลรับรองรูท DynamoDB เชื่อมโยงข้อมูลนี้กับบัญชี AWS ของคุณและใช้ข้อมูลนี้เพื่อให้สามารถเข้าถึงทรัพยากรทั้งหมดได้อย่างสมบูรณ์

AWS ขอแนะนำให้คุณใช้ข้อมูลรับรองรูทของคุณสำหรับการสร้างบัญชีการดูแลระบบเท่านั้น สิ่งนี้ช่วยให้คุณสร้างบัญชี IAM / ผู้ใช้ที่มีสิทธิ์น้อยกว่า ผู้ใช้ IAM เป็นบัญชีอื่น ๆ ที่สร้างขึ้นด้วยบริการ IAM สิทธิ์การเข้าถึง / สิทธิ์ของพวกเขารวมถึงการเข้าถึงเพจที่ปลอดภัยและสิทธิ์ที่กำหนดเองบางอย่างเช่นการปรับเปลี่ยนตาราง

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

ธุรการ

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

สิทธิ์ระบุผู้ใช้ทรัพยากรและการดำเนินการ หมายเหตุผู้ดูแลระบบเป็นเพียงบัญชีที่มีสิทธิ์ของผู้ดูแลระบบ

การดำเนินงานและทรัพยากร

ตารางยังคงเป็นทรัพยากรหลักใน DynamoDB แหล่งข้อมูลย่อยทำหน้าที่เป็นทรัพยากรเพิ่มเติมเช่นสตรีมและดัชนี ทรัพยากรเหล่านี้ใช้ชื่อที่ไม่ซ้ำกันซึ่งบางส่วนได้กล่าวถึงในตารางต่อไปนี้ -

ประเภท ARN (ชื่อทรัพยากร Amazon)
กระแส arn: aws: dynamodb: region: account-id: table / table-name / stream / stream-label
ดัชนี arn: aws: dynamodb: region: account-id: table / table-name / index / index-name
ตาราง arn: aws: dynamodb: region: account-id: table / table-name

ความเป็นเจ้าของ

เจ้าของทรัพยากรถูกกำหนดให้เป็นบัญชี AWS ซึ่งสร้างทรัพยากรหรือบัญชีเอนทิตีหลักที่รับผิดชอบในการตรวจสอบคำขอในการสร้างทรัพยากร พิจารณาว่าฟังก์ชันนี้ภายในสภาพแวดล้อม DynamoDB เป็นอย่างไร -

  • ในการใช้ข้อมูลรับรองรูทเพื่อสร้างตารางบัญชีของคุณยังคงเป็นเจ้าของทรัพยากร

  • ในการสร้างผู้ใช้ IAM และให้สิทธิ์ผู้ใช้ในการสร้างตารางบัญชีของคุณยังคงเป็นเจ้าของทรัพยากร

  • ในการสร้างผู้ใช้ IAM และการให้สิทธิ์ผู้ใช้และทุกคนที่สามารถสมมติบทบาทได้รับอนุญาตในการสร้างตารางบัญชีของคุณจะยังคงเป็นเจ้าของทรัพยากร

จัดการการเข้าถึงทรัพยากร

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

นโยบายตามข้อมูลประจำตัว (IAM) ช่วยให้คุณสามารถให้สิทธิ์ได้ด้วยวิธีต่อไปนี้ -

  • แนบสิทธิ์ให้กับผู้ใช้หรือกลุ่ม
  • แนบสิทธิ์กับบทบาทสำหรับการอนุญาตข้ามบัญชี

AWS อื่น ๆ อนุญาตให้ใช้นโยบายตามทรัพยากร นโยบายเหล่านี้อนุญาตให้เข้าถึงสิ่งต่างๆเช่นที่เก็บข้อมูล S3

องค์ประกอบนโยบาย

นโยบายกำหนดการกระทำผลกระทบทรัพยากรและหลักการ และให้สิทธิ์ในการดำเนินการเหล่านี้

Note - การดำเนินการ API อาจต้องการการอนุญาตสำหรับการดำเนินการหลายอย่าง

ดูองค์ประกอบนโยบายต่อไปนี้อย่างละเอียดยิ่งขึ้น -

  • Resource - ARN ระบุสิ่งนี้

  • Action - คำหลักระบุการดำเนินการทรัพยากรเหล่านี้และว่าจะอนุญาตหรือปฏิเสธ

  • Effect - ระบุเอฟเฟกต์สำหรับคำขอของผู้ใช้สำหรับการดำเนินการหมายถึงอนุญาตหรือปฏิเสธโดยมีการปฏิเสธเป็นค่าเริ่มต้น

  • Principal - เป็นการระบุผู้ใช้ที่แนบมากับนโยบาย

เงื่อนไข

ในการให้สิทธิ์คุณสามารถระบุเงื่อนไขเมื่อนโยบายเริ่มใช้งานได้เช่นในวันใดวันหนึ่ง แสดงเงื่อนไขด้วยคีย์เงื่อนไขซึ่งรวมถึงคีย์ AWS ทั้งระบบและคีย์ DynamoDB คีย์เหล่านี้จะกล่าวถึงโดยละเอียดในบทช่วยสอนในภายหลัง

สิทธิ์คอนโซล

ผู้ใช้ต้องการสิทธิ์พื้นฐานบางอย่างเพื่อใช้คอนโซล นอกจากนี้ยังต้องการสิทธิ์สำหรับคอนโซลในบริการมาตรฐานอื่น ๆ -

  • CloudWatch
  • ท่อส่งข้อมูล
  • การจัดการข้อมูลประจำตัวและการเข้าถึง
  • บริการแจ้งเตือน
  • Lambda

หากนโยบาย IAM พิสูจน์ได้ว่า จำกัด เกินไปผู้ใช้จะไม่สามารถใช้คอนโซลได้อย่างมีประสิทธิภาพ นอกจากนี้คุณไม่จำเป็นต้องกังวลเกี่ยวกับสิทธิ์ของผู้ใช้สำหรับผู้ที่เรียกใช้ CLI หรือ API เท่านั้น

นโยบาย Iam สำหรับการใช้งานทั่วไป

AWS ครอบคลุมการดำเนินการทั่วไปในสิทธิ์ด้วยนโยบายที่มีการจัดการ IAM แบบสแตนด์อโลน พวกเขาให้การอนุญาตที่สำคัญซึ่งช่วยให้คุณหลีกเลี่ยงการตรวจสอบสิ่งที่คุณต้องให้อย่างลึกซึ้ง

บางส่วนมีดังนี้ -

  • AmazonDynamoDBReadOnlyAccess - ให้การเข้าถึงแบบอ่านอย่างเดียวผ่านคอนโซล

  • AmazonDynamoDBFullAccess - ให้การเข้าถึงเต็มรูปแบบผ่านคอนโซล

  • AmazonDynamoDBFullAccesswithDataPipeline - ให้การเข้าถึงเต็มรูปแบบผ่านคอนโซลและอนุญาตให้ส่งออก / นำเข้าด้วย Data Pipeline

คุณยังสามารถกำหนดนโยบายที่กำหนดเองได้

การให้สิทธิพิเศษ: การใช้เชลล์

คุณสามารถให้สิทธิ์โดยใช้เชลล์ Javascript โปรแกรมต่อไปนี้แสดงนโยบายการอนุญาตโดยทั่วไป -

{ 
   "Version": "2016-05-22", 
   "Statement": [ 
      { 
         "Sid": "DescribeQueryScanToolsTable", 
         "Effect": "Deny", 
         
         "Action": [ 
            "dynamodb:DescribeTable", 
            "dynamodb:Query", 
            "dynamodb:Scan" 
         ], 
         "Resource": "arn:aws:dynamodb:us-west-2:account-id:table/Tools" 
      } 
   ] 
}

คุณสามารถตรวจสอบสามตัวอย่างดังต่อไปนี้ -

Block the user from executing any table action.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "AllAPIActionsOnTools", 
         "Effect": "Deny", 
         "Action": "dynamodb:*", 
         "Resource": "arn:aws:dynamodb:us-west-2:155556789012:table/Tools" 
      } 
   ] 
}

Block access to a table and its indices.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "AccessAllIndexesOnTools", 
         "Effect": "Deny", 
         "Action": [
            "dynamodb:*" 
         ], 
         "Resource": [ 
            "arn:aws:dynamodb:us-west-2:155556789012:table/Tools", 
            "arn:aws:dynamodb:us-west-2:155556789012:table/Tools/index/*" 
         ] 
      } 
   ] 
}

Block a user from making a reserved capacity offering purchase.

{ 
   "Version": "2016-05-23", 
   "Statement": [ 
      { 
         "Sid": "BlockReservedCapacityPurchases", 
         "Effect": "Deny", 
         "Action": "dynamodb:PurchaseReservedCapacityOfferings", 
         "Resource": "arn:aws:dynamodb:us-west-2:155556789012:*" 
      } 
   ] 
}

การให้สิทธิพิเศษ: การใช้ GUI Console

คุณยังสามารถใช้คอนโซล GUI เพื่อสร้างนโยบาย IAM เริ่มต้นด้วยการเลือกTablesจากบานหน้าต่างนำทาง ในรายการตารางให้เลือกตารางเป้าหมายและทำตามขั้นตอนเหล่านี้

Step 1 - เลือกไฟล์ Access control แท็บ

Step 2- เลือกผู้ให้บริการข้อมูลประจำตัวการกระทำและคุณลักษณะนโยบาย เลือกCreate policy หลังจากเข้าสู่การตั้งค่าทั้งหมด

Step 3 - เลือก Attach policy instructionsและทำตามขั้นตอนที่จำเป็นแต่ละขั้นตอนเพื่อเชื่อมโยงนโยบายกับบทบาท IAM ที่เหมาะสม