AWS Thai Blog

แนะนำขั้นตอนการ Rotate Access Key ให้กับ IAM Users บน AWS

การเปลี่ยนคีย์การเข้าถึง (Access Key) ซึ่งประกอบไปด้วย Access key ID และ Secret access key อย่างสม่ำเสมอ เป็นสิ่งที่ควรปฏิบัติตาม AWS Secuiry Best Practics เนื่องจากการเปลี่ยน Access Key อย่างสม่ำเสมอ จะช่วยป้องกันการโจมตีจากภายนอกจาก Access Key ที่อาจจะหลุดออกไป รวมถึงจะช่วยลดความเสียหายต่อธุรกิจที่อาจจะตามมาภายหลังได้เช่นกัน

การเปลี่ยนคีย์การเข้าถึง (Access Key) มีขั้นตอนในการทำเพียงไม่กี่ขั้นตอน ซึ่งในบทความนี้ จะพาทุกท่านไปดูขั้นตอนในการเปลี่ยนคีย์ในการเข้าถึง (Access Key) ผ่านหน้า AWS Management Console กัน นอกจากนั้นยังมีตัวอย่างคำสั่งในการเปลี่ยนคีย์ (Rotete Access Key) ผ่าน AWS Command Line Interface (CLI) ด้วยเช่นกัน

ขั้นตอนการเปลี่ยนคีย์การเข้าถึง (Access Key) ผ่าน AWS Console

เข้าสู่ระบบ AWS Management Console และเปิด IAM Console ที่ https://console.aws.amazon.com/iam

เลือกเมนู Users แล้วเลือก User ที่ต้องการจะเปลี่ยนคีย์

สร้างคีย์การเข้าถึง (Access Key) ใหม่แทนที่คีย์ปัจจุบันที่ใช้งานอยู่ โดยไปที่แท็บ Security credentials แล้วเลือก Create access Key ในเมนู Access Keys

หลังจากที่ได้คีย์ใหม่มาแล้ว ให้ไปอัปเดตคีย์การเข้าถึง (Access Key) กับแอปพลิเคชันที่ใช้งานด้วยคีย์การเข้าถึง (Access Key) ใหม่ และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของท่านสามารถทำงานได้ตามปกติ

หลังจากนั้นให้เข้าไปปิดการใช้งานคีย์เก่า โดยเลือก Make Inactive

หากแอปพลิเคชันของท่านสามารถทำงานได้ตามปกติ ท่านสามารถลบคีย์การเข้าถึง (Access Key) เก่าที่ตั้งให้เป็น Inactive ไว้ได้เลย โดยเลือกเครื่องหมายกากบาทหลัง Access Key ID

หน้าจอจะแสดงหน้าต่างยืนยันการลบ ให้กรอก Access Key ID ที่ท่านต้องการจะลบในกล่องข้อความ แล้วเลือก Delete เพื่อยืนยันการลบคีย์เก่าออกไป


ตัวอย่างคำสั่งในการเปลี่ยนคีย์ (Rotete Access Key) ผ่าน AWS CLI

ตัวอย่างที่ด้านล่างนี้ เป็นขั้นตอนในการเปลี่ยนคีย์การเข้าถึง (Access Key) ในตัวอย่างนี้ บทบาทสมมุติของท่านจะเป็นผู้ดูแล (Administrative) ของ IAM Users ซึ่งท่านจะใช้ AWS Command Line Interface (CLI) เพื่อทำการเปลี่ยนคีย์การเข้าถึง (Rotate Access Key) สำหรับ User ที่ชื่อ Tanisorn

หลังจากท่านติดตั้ง CLI เรียบร้อยแล้ว ท่านสามารถรันคำสั่งต่อไป เพื่อดูรายการคีย์การเข้าถึง (Access Key) ของคุณ Tanisorn ได้ผ่านคำสั่งนี้

aws iam list-access-keys --user-name Tanisorn

หน้า Command จะแสดงหน้าต่อดังต่อไปนี้

{
    "AccessKeyMetadata": [
        {
            "UserName": "Tanisorn",
            "Status": "Active",
            "CreateDate": "2022-12-31T18:49:57Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        }
    ]
}

ขั้นตอนที่ 1: สร้างคีย์ในการเข้าถึงใหม่ (Access Key)

สร้างคีย์ในการเข้าถึงใหม่ (Access Key) เป็นคีย์ใหม่สำหรับคุณ Tanisorn โดยใช้คำสั่งดังต่อไปนี้

aws iam create-access-key --user-name Tanisorn

ซึ่งหน้า Command จะแสดงหน้าจอดังต่อไปนี้กลับมา

{
    "AccessKey": {
        "UserName": "Tanisorn",
        "Status": "Active",
        "CreateDate": "2022-12-31T17:09:10.384Z",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "AccessKeyId": “AKIAIOSFODNN7EXAMPLE"
    }
}

จะสังเกตุเห็นว่าคำสั่ง AWS IAM จะใช้ Unique access key identifiers (AKIDs) เพื่ออ้างอิงถึงคีย์ในการเข้าถึง (Access Key) ท่านสามารถใช้ AKIDs เพื่อจัดการการใช้งานคีย์ในการเข้าถึง (Access Key) ได้ การสร้างคีย์ในการเข้าถึง (Access Key) ใหม่ AWS จะแสดงรหัสลับ (Secret Key) ขึ้นมาให้ ท่านควรบันทึกรหัสนี้ไว้และเก็บไว้ในที่ที่ปลอดภัย

ในตอนนี้ คุณ Tanisorn มีคีย์ในการเข้าถึง (Access Key) 2 คีย์แล้ว

เพิ่มเติม: AWS อนุญาตให้สร้างสร้างคีย์ในการเข้าถึง (Access Key) ได้แค่ 2 คีย์เท่านั้น หากท่านมีคีย์ในการเข้าถึง (Access Key) อยู่ 2 คีย์แล้ว ท่านจะไม่สามารถสร้างคีย์ในการเข้าถึง (Access Key) คีย์ที่ 3 ได้

ตัวอย่างคำสั่งในการแสดงรายการคีย์ในการเข้าถึง (Access Key) ผ่านคำสั่ง list-access-keys :

aws iam list-access-keys --user-name Tanisorn
{

    "AccessKeyMetadata": [
        {
            "UserName": "Tanisorn",
           "Status": "Active",
        "CreateDate": "2022-12-31T17:09:10.384Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Tanisorn",
            "Status": "Active",
            "CreateDate": "2022-12-31T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

ขั้นตอนที่ 2: นำคีย์การเข้าถึง (Access Key) ใหม่ไปใช้งานกับ Instances ทั้งหมดที่รันแอปพลิเคชันอยู่

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

ขั้นตอนที่ 3: ปิดการใช้งานคีย์การเข้าถึง (Access Key) เก่า

ตัวอย่างคำสั่งในการปิดการใช้งานคีย์เก่า

aws iam update-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --status Inactive --user-name Tanisorn

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

aws iam list-access-keys --user-name Tanisorn

ซึ่งหน้า Command จะแสดงหน้าจอดังต่อไปนี้กลับมา

{

    "AccessKeyMetadata": [
        {
            "UserName": "Tanisorn",
           "Status": "Inactive",
        "CreateDate": "2022-12-31T17:09:10.384Z",
            "AccessKeyId": "AKIAI44QH8DHBEXAMPLE"
        },
        {
            "UserName": "Tanisorn",
            "Status": "Active",
            "CreateDate": "2022-12-31T17:09:10.384Z",
            "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
        }
    ]
}

ขั้นตอนที่ 4: ตรวจสอบให้แน่ใจอีกครั้งว่าแอปพลิเคชันของท่านสามารถทำงานได้ตามปกติ

หากแอปพลิเคชันของท่านสามารถทำงานได้ตามปกติ ท่านสามารถลบคีย์การเข้าถึง (Access Key) เก่าที่ตั้งให้เป็น Inactive ไว้ได้เลย

ขั้นตอนที่ 5: ลบคีย์ที่ปิดการใช้งานออก

ขั้นตอนสุดท้ายคือการลบคีย์ที่โดนปิดการใช้งานไปในขั้นตอนก่อนหน้าออก โดยสามารถสั่งผ่านคำสั่งต่อไปนี้ได้

aws iam delete-access-key --access-key-id AKIAI44QH8DHBEXAMPLE --user-name Tanisorn

ข้อควรระวัง: การลบคีย์ในขั้นตอนนี้มีความแตกต่างกับการปิดการใช้งานคีย์ในขั้นตอนก่อนหน้า เนื่องจากการลบคีย์ ไม่สามารถกู้คืนคีย์กลับมาได้หากมีการลบไปแล้ว

หลังจากมีการรันคำสั่งลบคีย์ออกไปแล้ว ท่านสามารถรันคำสั่งเพื่อแสดงคีย์ปัจจุบันได้ เพื่อตรวจสอบดูว่าคีย์เก่าได้ลบไปแล้วเรียบร้อยแล้ว

aws iam list-access-keys --user-name Tanisorn

ซึ่งจะเห็นว่าคีย์เก่าได้โดนลบไปเรียบร้อยแล้ว

{
    "AccessKey": {
        "UserName": "Tanisorn",
        "Status": "Active",
        "CreateDate": "2022-12-31T17:09:10.384Z",
        "AccessKeyId": “AKIAIOSFODNN7EXAMPLE"
    }
}

บทสรุป

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

ท่านสามารถอ่านรายละเอียดเพิ่มเกี่ยวกับการเปลี่ยน Access Key ได้ที่ AWS IAM documentation

หากท่านต้องการติดตามข้อมูลข่าวสารเกี่ยวกับ AWS Security รวมไปถึงประกาศฟีเจอร์ใหม่ ๆ สามารถติดตามเราได้บน Twitter – AWS Security