ใครเป็นผู้ควบคุมคีย์

การใช้ AWS Security สำหรับนักพัฒนา

Rahul Singh

Technical Product Manager

คีย์ KMS สองประเภท

AWS managed

  • สร้างโดยบริการ ใช้ alias aws/s3
  • อ่านนโยบายได้ แต่แก้ไขไม่ได้
  • ไม่มีค่าใช้จ่ายรายเดือน

สองการ์ดเรียงซ้อนกันเปรียบเทียบคีย์ที่ AWS จัดการกับคีย์ที่ลูกค้าจัดการในสามแถวเดียวกัน ได้แก่ นโยบายคีย์ การหมุนเวียน และค่าใช้จ่าย แถวนโยบายคีย์ของการ์ดคีย์ที่ลูกค้าจัดการถูกไฮไลต์ไว้ แต่ละการ์ดมี alias ของตัวเอง ได้แก่ aws slash s3 และ alias slash reports

การใช้ AWS Security สำหรับนักพัฒนา

คีย์ KMS สองประเภท

AWS managed

  • สร้างโดยบริการ ใช้ alias aws/s3
  • อ่านนโยบายได้ แต่แก้ไขไม่ได้
  • ไม่มีค่าใช้จ่ายรายเดือน

Customer managed

  • สร้างโดยผู้ใช้เอง ใช้ alias alias/reports กำหนดนโยบายได้เอง
  • กำหนดรอบการหมุนเวียนได้เอง
  • ค่าใช้จ่าย 1 ดอลลาร์ต่อเดือนต่อคีย์

สองการ์ดเรียงซ้อนกันเปรียบเทียบคีย์ที่ AWS จัดการกับคีย์ที่ลูกค้าจัดการในสามแถวเดียวกัน ได้แก่ นโยบายคีย์ การหมุนเวียน และค่าใช้จ่าย แถวนโยบายคีย์ของการ์ดคีย์ที่ลูกค้าจัดการถูกไฮไลต์ไว้ แต่ละการ์ดมี alias ของตัวเอง ได้แก่ aws slash s3 และ alias slash reports

การใช้ AWS Security สำหรับนักพัฒนา

สองด่าน ต้องผ่านทั้งคู่

คำขอถอดรหัสหนึ่งรายการกำลังเข้าใกล้ด่านแรกจากสองด่าน ด่านนโยบาย IAM วาดด้วยเส้นทึบและมีหมายเลข 1 ส่วนด่านนโยบายคีย์ที่อยู่ด้านหลังวาดด้วยเส้นประสีเทา และยังไม่มีด่านใดตอบกลับ

  1. นโยบาย IAM: สิ่งที่ผู้เรียกขอได้
การใช้ AWS Security สำหรับนักพัฒนา

สองด่าน ต้องผ่านทั้งคู่

คำขอถอดรหัสหนึ่งรายการเคลื่อนจากซ้ายไปขวาผ่านด่านที่มีหมายเลขสองด่าน หมายเลข 1 คือนโยบาย IAM และหมายเลข 2 คือนโยบายคีย์ ก่อนจะไปถึงคีย์ KMS วงเล็บด้านล่างสองด่านนี้ระบุว่าเป็นคำตอบที่เป็นอิสระจากกัน

  1. นโยบาย IAM: สิ่งที่ผู้เรียกขอได้
  2. นโยบายคีย์: ใครที่คีย์จะตอบกลับ

นโยบายคีย์เริ่มต้น: มอบหมายให้ IAM จัดการ

Grants: การดำเนินการเฉพาะของคีย์สำหรับ principal รายเดียว เพิกถอนได้อย่างอิสระ

การใช้ AWS Security สำหรับนักพัฒนา

คีย์ไม่เคยแตะต้องข้อมูลโดยตรง

Amazon S3 ทำหน้าที่แทนผู้ใช้เรียก AWS KMS ที่หมายเลข 1 แล้ว KMS จะส่งคืนดาต้าคีย์หนึ่งชุดเป็นสำเนาแบบ plaintext และสำเนาที่เข้ารหัสแล้ว สำเนาที่เข้ารหัสจะถูกเก็บไว้ติดกับ ciphertext ของอ็อบเจ็กต์ และเส้นทางส่งกลับแบบเส้นประที่หมายเลข 2 จะนำสำเนานั้นกลับมาผ่านการเรียกถอดรหัส

Envelope encryption

การเข้ารหัสโดยตรง: จำกัดที่ 4 KB

การใช้ AWS Security สำหรับนักพัฒนา

คีย์ไม่เคยแตะต้องข้อมูลโดยตรง

Amazon S3 ทำหน้าที่แทนผู้ใช้เรียก AWS KMS ที่หมายเลข 1 แล้ว KMS จะส่งคืนดาต้าคีย์หนึ่งชุดเป็นสำเนาแบบ plaintext และสำเนาที่เข้ารหัสแล้ว สำเนาที่เข้ารหัสจะถูกเก็บไว้ติดกับ ciphertext ของอ็อบเจ็กต์ และเส้นทางส่งกลับแบบเส้นประที่หมายเลข 2 จะนำสำเนานั้นกลับมาผ่านการเรียกถอดรหัส

Envelope encryption

การเข้ารหัสโดยตรง: จำกัดที่ 4 KB

  1. GenerateDataKey ส่งคืนสำเนาสองชุด
  2. kms:Decrypt กับสำเนาที่จัดเก็บไว้
การใช้ AWS Security สำหรับนักพัฒนา

ข้ามบัญชี ไม่มีฝ่ายใดเห็นครบทั้งสองส่วน

บัญชีของผู้เรียก

  • การดำเนินการที่ได้รับอนุญาตใน IAM
  • ทรัพยากร: key ARN

แผงบัญชีสองแผงแบบเส้นประ แยกด้วยเส้นขอบบัญชี บทบาทของผู้เรียกและนโยบาย IAM อยู่ในแผงด้านบน ส่วนนโยบายคีย์และคีย์ KMS อยู่ในแผงด้านล่าง และคำขอข้ามเส้นขอบระหว่างสองแผงนี้

การใช้ AWS Security สำหรับนักพัฒนา

ข้ามบัญชี ไม่มีฝ่ายใดเห็นครบทั้งสองส่วน

บัญชีของผู้เรียก

  • การดำเนินการที่ได้รับอนุญาตใน IAM
  • ทรัพยากร: key ARN

บัญชีของเจ้าของคีย์

  • นโยบายคีย์ที่ระบุชื่อผู้เรียก
  • บัญชีนั้น หรือบทบาทหนึ่งในบัญชีนั้น

แผงบัญชีสองแผงแบบเส้นประ แยกด้วยเส้นขอบบัญชี บทบาทของผู้เรียกและนโยบาย IAM อยู่ในแผงด้านบน ส่วนนโยบายคีย์และคีย์ KMS อยู่ในแผงด้านล่าง และคำขอข้ามเส้นขอบระหว่างสองแผงนี้

การใช้ AWS Security สำหรับนักพัฒนา

อ่านข้อความปฏิเสธ อย่าเดาเอาเอง

Identity based

  • AccessDeniedException ตามด้วยข้อความที่ระบุด่านนั้น

  • no identity-based policy allows

  • แก้ไขนโยบาย IAM ของผู้เรียก

 

คำขอถอดรหัสถูกหยุดที่ด่านแรก ซึ่งนโยบาย IAM มีเครื่องหมายกากบาทสีแดง ส่วนนโยบายคีย์ที่อยู่ด้านหลังเป็นสีเทาและไม่เคยถูกตรวจสอบถึง คำบรรยายด้านล่างแผนภาพระบุว่า no identity-based policy allows

 

การใช้ AWS Security สำหรับนักพัฒนา

อ่านข้อความปฏิเสธ อย่าเดาเอาเอง

Identity based

  • AccessDeniedException ตามด้วยข้อความที่ระบุด่านนั้น

  • no identity-based policy allows

  • แก้ไขนโยบาย IAM ของผู้เรียก

Resource based

  • no resource-based policy allows
  • แก้ไขนโยบายคีย์

คำขอถอดรหัสถูกหยุดที่ด่านแรก ซึ่งนโยบาย IAM มีเครื่องหมายกากบาทสีแดง ส่วนนโยบายคีย์ที่อยู่ด้านหลังเป็นสีเทาและไม่เคยถูกตรวจสอบถึง คำบรรยายด้านล่างแผนภาพระบุว่า no identity-based policy allows

คำขอถอดรหัสผ่านนโยบาย IAM ที่มีเครื่องหมายถูกสีเขียว แล้วถูกหยุดที่ด่านที่สอง ซึ่งนโยบายคีย์มีเครื่องหมายกากบาทสีแดง คำบรรยายด้านล่างแผนภาพระบุว่า no resource-based policy allows

การใช้ AWS Security สำหรับนักพัฒนา

การหมุนเวียนเปลี่ยนแปลงอะไรจริงๆ

Automatic rotation

  • ค่าเริ่มต้น 365 วัน
  • ช่วงตั้งแต่ 90 ถึง 2,560 วัน

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

การใช้ AWS Security สำหรับนักพัฒนา

การหมุนเวียนเปลี่ยนแปลงอะไรจริงๆ

Automatic rotation

  • ค่าเริ่มต้น 365 วัน
  • ช่วงตั้งแต่ 90 ถึง 2,560 วัน

On demand

  • RotateKeyOnDemand สูงสุด 25 ครั้งต่อคีย์

ข้อจำกัดสองประการ

  • คีย์ที่ AWS จัดการ กำหนดตายตัวเป็นรายปี
  • การหมุนเวียนอัตโนมัติ: เฉพาะคีย์แบบ symmetric ที่สร้างโดย KMS เท่านั้น

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

การใช้ AWS Security สำหรับนักพัฒนา

สิ่งที่การหมุนเวียนแก้ไม่ได้

สี่แถวเปรียบเทียบทั้งสองด้านของเส้นการหมุนเวียน แถวข้อมูลคีย์เปลี่ยนจากเวอร์ชัน 1 เป็นเวอร์ชัน 2 ในขณะที่ตัวระบุคีย์ alias นโยบายคีย์ และอ็อบเจ็กต์ที่เขียนไว้ก่อนหน้านี้เหมือนกันทั้งสองด้าน

เปลี่ยนแปลง: ข้อมูลคีย์ที่อยู่เบื้องหลัง

ไม่เปลี่ยนแปลง: key ID, ARN, alias, นโยบายคีย์

การใช้ AWS Security สำหรับนักพัฒนา

สิ่งที่การหมุนเวียนแก้ไม่ได้

สี่แถวเปรียบเทียบทั้งสองด้านของเส้นการหมุนเวียน แถวข้อมูลคีย์เปลี่ยนจากเวอร์ชัน 1 เป็นเวอร์ชัน 2 ในขณะที่ตัวระบุคีย์ alias นโยบายคีย์ และอ็อบเจ็กต์ที่เขียนไว้ก่อนหน้านี้เหมือนกันทั้งสองด้าน

เปลี่ยนแปลง: ข้อมูลคีย์ที่อยู่เบื้องหลัง

ไม่เปลี่ยนแปลง: key ID, ARN, alias, นโยบายคีย์

  • ไม่ต้องแก้ไขอะไรในโค้ด
  • อ็อบเจ็กต์เก่าและนโยบายที่กว้างเกินไป: ทั้งสองอย่างไม่เปลี่ยนแปลง
การใช้ AWS Security สำหรับนักพัฒนา

แล้วทำไมถึงควรเปิดใช้งาน

สิ่งที่ได้มา

  • เวอร์ชันเดียวไม่เคยครอบคลุมข้อมูลทั้งหมด
  • กฎการปฏิบัติตามข้อกำหนดและสัญญาที่บังคับให้ต้องหมุนเวียน

การ์ดสีเขียวหัวข้อ what it buys อยู่ใต้ป้ายกำกับ turning rotation on แสดงกฎการตรวจสอบระบุว่า rotate every 365 days พร้อมเครื่องหมายถูกสีเขียว และคีย์หนึ่งตัววาดเป็นสามเวอร์ชันที่เชื่อมต่อกัน คือ v1, v2 และ v3 พร้อมคำบรรยายว่าแต่ละเวอร์ชันครอบคลุมเฉพาะสิ่งที่มันเขียนไว้

การใช้ AWS Security สำหรับนักพัฒนา

แล้วทำไมถึงควรเปิดใช้งาน

สิ่งที่ได้มา

  • เวอร์ชันเดียวไม่เคยครอบคลุมข้อมูลทั้งหมด
  • กฎการปฏิบัติตามข้อกำหนดและสัญญาที่บังคับให้ต้องหมุนเวียน

 

สิ่งที่ต้องเสีย

  • ไม่ต้องแก้โค้ด ไม่ต้องเข้ารหัสซ้ำ

การ์ดสีเขียว what it buys ใบเดิม พร้อมการ์ดที่สองด้านล่างหัวข้อ what it costs ซึ่งแสดงสองแถว ได้แก่ โค้ดของคุณไม่เปลี่ยนแปลง และอ็อบเจ็กต์เก่าไม่ต้องเข้ารหัสซ้ำ

การใช้ AWS Security สำหรับนักพัฒนา

มาฝึกกันเถอะ!

การใช้ AWS Security สำหรับนักพัฒนา

Preparing Video For Download...