Skip to main content

KMS Key Policies & IAM Principals

ในการบรรยายนี้ เราจะพูดถึง KMS Key Policies พร้อมตัวอย่างหลายกรณี Key Policy ใช้เพื่อกำหนดว่าใครสามารถเข้าถึง KMS Key ของคุณได้

  • Default KMS Key Policy ที่สร้างผ่าน AWS Console จะอนุญาตให้ทุกคนภายในบัญชีของคุณเข้าถึง KMS Key ได้ ตราบใดที่มีสิทธิ์ IAM ที่เหมาะสม นี่คือกรณีพิเศษ

การอนุญาตเฉพาะผู้ใช้ที่ระบุ​

หากคุณต้องการอนุญาต ผู้ใช้เฉพาะ สามารถเป็น IAM User, IAM Role หรือ Federated User ได้

ตัวอย่าง:

  • ระบุว่าอนุญาต KMS actions ใดบ้าง เช่น encrypt, decrypt เป็นต้น
  • กำหนด principal ในนโยบายอย่างชัดเจน
  • ตัวอย่างเช่น federated user ไม่จำเป็นต้องมี IAM Policy เพิ่มเติม เพราะได้รับอนุญาตโดยตรงใน KMS Key Policy

ประเภทของ Principals ที่อนุญาตใน KMS Key Policies และ IAM​

เราสามารถอนุญาต principal ประเภทใดได้บ้างใน KMS Key Policy หรือ IAM Policy

  1. Account และ Root User:

    • ระบุ principal โดยใช้หมายเลขบัญชี AWS และ root user
    • เช่น ระบุ principal เป็น AWS พร้อมหมายเลขบัญชี + root → ทุก principal ภายในบัญชีได้รับอนุญาต
    • IAM Policies จะทำงานตามนั้น
  2. Specific IAM Role:

    • อนุญาต IAM Role เฉพาะโดยระบุ ARN ของ Role ใน statement
  3. IAM Role Sessions:

    • ใช้กับ assumed role หรือ identity ผ่าน federation เช่น Cognito Identity หรือ SAML
  4. IAM Users:

    • ระบุ IAM User เฉพาะในบัญชีของคุณหรือบัญชีอื่น
  5. Federated User Sessions:

    • เมื่อมี user federation ใน AWS สามารถระบุ federated user เฉพาะ
  6. AWS Services:

    • ระบุ service principal เพื่ออนุญาต AWS service เฉพาะใช้ KMS Key

การอนุญาตให้ทุก Principal​

หากต้องการอนุญาต ทุก principal และ ทุก action สามารถใช้ wildcard "*" หรือ "AWS:*" เป็น principal

สรุป​

  • KMS Key Policies กำหนดว่าใครสามารถเข้าถึง KMS Key ของคุณ
  • Default Key Policy อนุญาตทุกคนในบัญชีที่มี IAM Permissions ที่เหมาะสมเข้าถึง key
  • สามารถอนุญาต principal เฉพาะ เช่น IAM Users, Roles, Federated Users หรือ Services ใน KMS Key Policy
  • Principal สามารถรวมถึง root users, IAM roles, federated user sessions, และ AWS services