ในปีพ. ศ. 2554 Amazon ประกาศความพร้อมของ AWS Identity & Access Management (IAM) สำหรับ CloudFront IAM เปิดตัวในปี 2010 และรวมถึงการสนับสนุน S3 AWS Identity & Access Management (IAM) ช่วยให้คุณสามารถมีผู้ใช้หลายรายภายในบัญชี AWS ได้ ถ้าคุณใช้ Amazon Web Services (AWS) คุณทราบว่าวิธีเดียวที่จะจัดการเนื้อหาใน AWS คือการให้ชื่อผู้ใช้และรหัสผ่านหรือคีย์การเข้าถึงของคุณ นี่เป็นปัญหาด้านความปลอดภัยที่แท้จริงสำหรับพวกเราส่วนใหญ่ IAM ช่วยลดความจำเป็นในการแชร์รหัสผ่านและคีย์การเข้าถึง
การเปลี่ยนรหัสผ่าน AWS หลักของเราหรือการสร้างคีย์ใหม่ ๆ เป็นเพียงวิธีแก้ปัญหาที่ยุ่งเหยิงเมื่อพนักงานออกจากทีมของเรา AWS Identity & Access Management (IAM) เป็นการเริ่มต้นที่ดีเพื่อให้บัญชีผู้ใช้แต่ละรายมีแต่ละคีย์ อย่างไรก็ตามเราเป็นผู้ใช้ S3 / CloudFront ดังนั้นเราจึงได้เฝ้าติดตาม CloudFront เพื่อเพิ่ม IAM ซึ่งเกิดขึ้นในที่สุด
ฉันพบว่าเอกสารในบริการนี้เป็นบิตกระจัดกระจาย มีผลิตภัณฑ์ของบุคคลที่สามจำนวนหนึ่งที่ให้การสนับสนุน Identity & Access Management (IAM) เป็นจำนวนมาก แต่นักพัฒนามักจะไม่ค่อยกระตือรือร้นดังนั้นฉันจึงหาทางออกฟรีในการจัดการ IAM กับบริการ Amazon S3 ของเรา
บทความนี้ดำเนินการขั้นตอนการตั้งค่าส่วนติดต่อบรรทัดคำสั่งที่สนับสนุน IAM และการตั้งค่ากลุ่ม / ผู้ใช้ที่มีสิทธิ์เข้าถึง S3 คุณจำเป็นต้องมีการตั้งค่าบัญชี Amazon AWS S3 ก่อนที่คุณจะเริ่มกำหนดค่า Identity & Access Management (IAM) บทความของฉันโดยใช้ Amazon Simple Storage Service (S3) จะนำคุณสู่ขั้นตอนการตั้งค่าบัญชี AWS S3
ต่อไปนี้เป็นขั้นตอนในการตั้งค่าและการใช้ผู้ใช้ IAM นี้เขียนขึ้นสำหรับ Windows แต่คุณสามารถปรับแต่งเพื่อใช้ใน Linux, UNIX และ / หรือ Mac OSX
- ติดตั้งและกำหนดค่า Command Line Interface (CLI)
- สร้างกลุ่ม
- ให้กลุ่มเข้าถึง S3 Bucket และ CloudFront
- สร้างผู้ใช้และเพิ่มในกลุ่ม
- สร้างโปรไฟล์การเข้าสู่ระบบและสร้างคีย์
- เข้าใช้งานทดสอบ
ติดตั้งและกำหนดค่า Command Line Interface (CLI)
IAM Command Line Toolkit เป็นโปรแกรม Java ที่มีอยู่ใน Amazon's AWS Developers Tools เครื่องมือนี้ช่วยให้คุณสามารถรันคำสั่ง IAM API จากโปรแกรมอรรถประโยชน์เชลล์ (DOS for Windows)
- คุณต้องใช้ Java 1.6 หรือสูงกว่า คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดจาก Java.com หากต้องการดูว่ามีการติดตั้งเวอร์ชันใดในระบบ Windows ของคุณให้เปิด Command Prompt และพิมพ์ java -version สมมติว่า java.exe อยู่ในเส้นทางของคุณ
- ดาวน์โหลดชุดเครื่องมือ IAM CLI และเปิดเครื่องรูดที่ใดที่หนึ่งในไดรฟ์ภายในของคุณ
- มีไฟล์ 2 ไฟล์อยู่ในรากของชุดเครื่องมือ CLI ที่คุณต้องอัพเดต
- AWS-credential.template: ไฟล์นี้มีข้อมูลรับรอง AWS ของคุณ เพิ่ม AWSAccessKeyId และ AWSSecretKey ของคุณบันทึกและปิดไฟล์
- ลูกค้า config.template: คุณจำเป็นต้องอัปเดตไฟล์นี้หากต้องการพร็อกซีเซิร์ฟเวอร์ ลบเครื่องหมาย # และอัปเดต ClientProxyHost, ClientProxyPort, ClientProxyUsername และ ClientProxyPassword บันทึกและปิดไฟล์
- ขั้นตอนต่อไปคือการเพิ่มตัวแปรสภาพแวดล้อม ไปที่แผงควบคุม คุณสมบัติของระบบ การตั้งค่าระบบขั้นสูง | ตัวแปรสภาพแวดล้อม เพิ่มตัวแปรต่อไปนี้:
- AWS_IAM_HOME: ตั้งค่าตัวแปรนี้ลงในไดเร็กทอรีที่คุณคลายซินต์ชุดเครื่องมือ CLI ถ้าคุณใช้ Windows และคลายซิปมาที่รากของไดรฟ์ C ตัวแปรจะเป็น C: IAMCli-1.2.0
- JAVA_HOME: ตั้งค่าตัวแปรนี้ไปยังไดเร็กทอรีที่ติดตั้ง Java นี่คือตำแหน่งของไฟล์ java.exe ในการติดตั้ง Windows 7 Java ปกติจะเป็นเช่น C: Program Files (x86) Java jre6
- AWS_CREDENTIAL_FILE: ตั้งค่าตัวแปรนี้เป็นพา ธ และชื่อไฟล์ของ aws-credential.template ที่คุณอัปเดตด้านบน ถ้าคุณใช้ Windows และคลายซิปมาที่รากของไดรฟ์ C ตัวแปรจะเป็น C: IAMCli-1.2.0 aws-credential.template
- CLIENT_CONFIG_FILE: คุณจำเป็นต้องเพิ่มตัวแปรสภาพแวดล้อมนี้ถ้าคุณต้องการพร็อกซีเซิร์ฟเวอร์ ถ้าคุณใช้ Windows และคลายซิปมาที่รากของไดรฟ์ C ตัวแปรจะเป็น C: IAMCli-1.2.0 client-config.template อย่าเพิ่มตัวแปรนี้จนกว่าคุณจะต้องการ
- ทดสอบการติดตั้งโดยไปที่ Command Prompt และป้อน iam-userlistbypath ตราบเท่าที่คุณไม่ได้รับข้อผิดพลาดคุณควรจะดีไป
คำสั่ง IAM ทั้งหมดสามารถรันได้จาก Command Prompt คำสั่งทั้งหมดเริ่มต้นด้วย "iam-"
สร้างกลุ่ม
มีกลุ่มที่สามารถสร้างได้สูงสุด 100 กลุ่มสำหรับแต่ละบัญชี AWS แม้ว่าคุณจะสามารถตั้งค่าสิทธิ์ใน IAM ได้ในระดับผู้ใช้ แต่การใช้กลุ่มจะเป็นการปฏิบัติที่ดีที่สุด นี่คือกระบวนการในการสร้างกลุ่มใน IAM
- ไวยากรณ์สำหรับสร้างกลุ่มคือ iam-groupcreate -g GROUPNAME -p PATH -v โดยที่ -p และ -v เป็นตัวเลือก เอกสารทั้งหมดเกี่ยวกับส่วนติดต่อบรรทัดคำสั่งมีอยู่ในเอกสาร AWS
- ถ้าคุณต้องการสร้างกลุ่มที่เรียกว่า "awesomeusers" คุณจะต้องป้อน iam-groupcreate -g awesomeusers ที่ Command Prompt
- คุณสามารถตรวจสอบว่ากลุ่มถูกสร้างขึ้นอย่างถูกต้องโดยการป้อน iam-grouplistbypath ที่ Command Prompt หากคุณสร้างกลุ่มนี้แล้วผลลัพธ์จะเป็น "arn: aws: iam :: 123456789012: group / awesomeusers" โดยที่หมายเลขนี้เป็นหมายเลขบัญชี AWS ของคุณ
ให้กลุ่มเข้าถึง S3 Bucket และ CloudFront
นโยบายจะควบคุมสิ่งที่กลุ่มของคุณสามารถทำใน S3 หรือ CloudFront ได้ ตามค่าเริ่มต้นกลุ่มของคุณจะไม่มีสิทธิ์เข้าถึง AWSฉันพบเอกสารเกี่ยวกับนโยบายที่จะตกลง แต่ในการสร้างกำมือของนโยบายฉันได้เล็กน้อยทดลองและข้อผิดพลาดเพื่อให้ได้สิ่งที่ทำงานวิธีที่ฉันต้องการให้ทำงาน
คุณมีตัวเลือกสำหรับการสร้างนโยบาย ตัวเลือกหนึ่งคือคุณสามารถใส่คำสั่งเหล่านี้ลงใน Command Prompt ได้โดยตรง เนื่องจากคุณอาจมีการสร้างนโยบายและปรับแต่งให้เหมาะสำหรับฉันดูเหมือนจะง่ายกว่าในการเพิ่มนโยบายลงในไฟล์ข้อความแล้วอัปโหลดไฟล์ข้อความเป็นพารามิเตอร์ด้วยคำสั่ง iam-groupuploadpolicy นี่เป็นกระบวนการที่ใช้ไฟล์ข้อความและอัปโหลดไปยัง IAM
- ใช้สิ่งต่างๆเช่น Notepad และป้อนข้อความต่อไปนี้และบันทึกไฟล์:
- {
- "งบ": {
- "ผล": "อนุญาต"
- "การกระทำ": "s3: *"
- "ทรัพยากร":
- "ARN: AWS: s3 ::: BUCKETNAME"
- "ARN: AWS: s3 ::: BUCKETNAME / *"
- },
- {
- "ผล": "อนุญาต"
- "การกระทำ": "s3: ListAllMyBuckets"
- "ทรัพยากร": "ARN: AWS: s3 ::: *"
- },
- {
- "ผล": "อนุญาต"
- "การกระทำ": "CloudFront: *"
- "ทรัพยากร":"*"
- }
- }
- นโยบายนี้มีอยู่ 3 ส่วน เอฟเฟคใช้เพื่ออนุญาตหรือปฏิเสธการเข้าถึงบางประเภท การกระทำคือสิ่งที่กลุ่มสามารถทำได้ ทรัพยากรนี้จะใช้เพื่อให้สามารถเข้าถึงแต่ละถังได้
- คุณสามารถ จำกัด การดำเนินการแยกกันได้ ในตัวอย่างนี้ "Action": "s3: GetObject", "s3: ListBucket", "s3: GetObjectVersion" กลุ่มจะสามารถแสดงเนื้อหาของถังและดาวน์โหลดวัตถุได้
- ส่วนแรก "อนุญาต" กลุ่มเพื่อดำเนินการ S3 ทั้งหมดสำหรับสต็อค "BUCKETNAME"
- ส่วนที่สอง "อนุญาตให้" กลุ่มแสดงรายการข้อมูลทั้งหมดใน S3 คุณต้องการข้อมูลนี้เพื่อให้สามารถเห็นรายการที่เก็บข้อมูลได้ถ้าคุณใช้สิ่งต่างๆเช่นคอนโซล AWS
- ส่วนที่สามจะช่วยให้กลุ่มสามารถเข้าถึง CloudFront ได้อย่างเต็มที่
มีนโยบายมากมายสำหรับนโยบาย IAM Amazon มีเครื่องมือที่ยอดเยี่ยมจริงๆที่เรียกว่า AWS Policy Generator เครื่องมือนี้มี GUI ที่คุณสามารถสร้างนโยบายของคุณและสร้างรหัสจริงที่คุณต้องใช้เพื่อดำเนินนโยบายนี้ นอกจากนี้คุณยังสามารถดูส่วนภาษาของนโยบายการเข้าถึงได้จากเอกสารออนไลน์ที่ใช้ AWS Identity and Access Management
สร้างผู้ใช้และเพิ่มในกลุ่ม
ขั้นตอนการสร้างผู้ใช้รายใหม่และการเพิ่มลงในกลุ่มเพื่อให้เข้าถึงได้โดยมีขั้นตอนสองขั้นตอน
- ไวยากรณ์สำหรับการสร้างผู้ใช้คือ iam-usercreate -u USERNAME -p PATH -g GROUPS … -k -v โดยที่ p, -g, -k และ -v เป็นตัวเลือก เอกสารทั้งหมดเกี่ยวกับส่วนติดต่อบรรทัดคำสั่งมีอยู่ในเอกสาร AWS
- ถ้าคุณต้องการสร้างผู้ใช้ "bob" คุณจะต้องใส่ iam-usercreate -u bob -g awesomeusers ที่ Command Prompt
- คุณสามารถตรวจสอบว่าผู้ใช้ถูกสร้างขึ้นอย่างถูกต้องโดยการป้อน iam-grouplistusers -g awesomeusers ที่ Command Prompt หากคุณสร้างผู้ใช้รายนี้เอาท์พุทจะเป็น "arn: aws: iam :: 123456789012: user / bob" ซึ่งหมายเลขนี้เป็นหมายเลขบัญชี AWS ของคุณ
สร้างโปรไฟล์การเข้าสู่ระบบและสร้างคีย์
ณ จุดนี้คุณได้สร้างผู้ใช้ แต่คุณจำเป็นต้องให้พวกเขามีวิธีการเพิ่มและลบวัตถุจาก S3 จริง มี 2 ตัวเลือกเพื่อให้ผู้ใช้ของคุณเข้าถึง S3 โดยใช้ IAM คุณสามารถสร้างโปรไฟล์เข้าสู่ระบบและให้รหัสผ่านกับผู้ใช้ของคุณ พวกเขาสามารถใช้ข้อมูลรับรองเพื่อเข้าสู่ Amazon AWS Console ได้ ตัวเลือกอื่น ๆ คือให้สิทธิ์การเข้าถึงและคีย์ลับแก่ผู้ใช้ของคุณ พวกเขาสามารถใช้คีย์เหล่านี้ในเครื่องมือของบุคคลที่ 3 เช่น S3 Fox, CloudBerry S3 Explorer หรือ S3 Browser
สร้างโปรไฟล์เข้าสู่ระบบ
การสร้างโปรไฟล์ล็อกอินสำหรับผู้ใช้ S3 ของคุณจะมีชื่อผู้ใช้และรหัสผ่านที่สามารถใช้เพื่อเข้าสู่ระบบ Amazon AWS Console ได้
- ไวยากรณ์สำหรับการสร้างโปรไฟล์การเข้าสู่ระบบคือ iam-useraddloginprofile -u USERNAME -p PASSWORD เอกสารทั้งหมดเกี่ยวกับส่วนติดต่อบรรทัดคำสั่งมีอยู่ในเอกสาร AWS
- หากคุณต้องการสร้างโปรไฟล์การเข้าสู่ระบบสำหรับผู้ใช้ "bob" คุณจะต้องใส่ iam-useraddloginprofile -u bob -p PASSWORD ที่ Command Prompt
- คุณสามารถตรวจสอบว่าโปรไฟล์การเข้าสู่ระบบถูกสร้างขึ้นอย่างถูกต้องโดยป้อน iam-usergetloginprofile -u bob ที่ Command Prompt ถ้าคุณได้สร้างโปรไฟล์การเข้าสู่ระบบสำหรับ bob เอาท์พุทจะเป็นเช่น "มีข้อมูลเข้าสู่ระบบสำหรับผู้ใช้ bob"
สร้างคีย์
การสร้างคีย์การเข้าถึง AWS Secret Access และรหัสคีย์การเข้าถึง AWS ที่สอดคล้องกันจะทำให้ผู้ใช้สามารถใช้ซอฟต์แวร์ของบุคคลที่ 3 เช่นเดียวกับที่ได้กล่าวมาก่อนหน้านี้ โปรดจำไว้ว่าเป็นมาตรการรักษาความปลอดภัยคุณสามารถรับคีย์เหล่านี้ได้ในระหว่างขั้นตอนการเพิ่มโปรไฟล์ผู้ใช้เท่านั้น ตรวจสอบให้แน่ใจว่าคุณได้คัดลอกและวางเอาต์พุตจาก Command Prompt แล้วบันทึกในไฟล์ข้อความ คุณสามารถส่งไฟล์ไปยังผู้ใช้ของคุณได้
- ไวยากรณ์สำหรับการเพิ่มคีย์สำหรับผู้ใช้คือ iam-useraddkey -u USERNAME เอกสารทั้งหมดเกี่ยวกับส่วนติดต่อบรรทัดคำสั่งมีอยู่ในเอกสาร AWS
- ถ้าคุณต้องการสร้างคีย์สำหรับผู้ใช้ "bob" คุณจะต้องป้อน iam-useraddkey -u bob ที่ Command Prompt
- คำสั่งจะแสดงคีย์ที่จะมีลักษณะดังนี้:
- AKIACOOB5BQVEXAMPLE
- BvQW1IpqVzRdbwPUirD3pK6L8ngoX4PTEXAMPLE
- บรรทัดแรกคือรหัส Access Key และบรรทัดที่สองคือรหัสลับการเข้าถึง คุณต้องการทั้งซอฟต์แวร์ของ บริษัท อื่น
เข้าใช้งานทดสอบ
ตอนนี้คุณได้สร้างกลุ่ม / ผู้ใช้ IAM และกำหนดให้กลุ่มเข้าถึงโดยใช้นโยบายคุณต้องทดสอบสิทธิ์การเข้าถึง
การเข้าถึงคอนโซล
ผู้ใช้ของคุณสามารถใช้ชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ AWS Console ได้ อย่างไรก็ตามนี่ไม่ใช่หน้าเข้าสู่ระบบคอนโซลปกติที่ใช้สำหรับบัญชี AWS หลัก มี URL พิเศษที่คุณสามารถใช้ซึ่งจะมีแบบฟอร์มการลงชื่อเข้าใช้สำหรับบัญชี Amazon AWS ของคุณเท่านั้น นี่คือ URL เพื่อเข้าสู่ S3 สำหรับผู้ใช้ IAM ของคุณ
https://AWS-ACCOUNT-NUMBER.signin.aws.amazon.com/console/s3
AWS-ACCOUNT-NUMBER คือหมายเลขบัญชี AWS ปกติของคุณ คุณสามารถรับข้อมูลนี้ได้โดยเข้าสู่แบบฟอร์มการลงชื่อเข้าใช้ Amazon Web Service เข้าสู่ระบบและคลิกที่บัญชี | กิจกรรมในบัญชี หมายเลขบัญชีของคุณอยู่ที่มุมบนขวา ตรวจสอบว่าได้ลบเครื่องหมายขีดคั่น URL จะมีลักษณะคล้าย https://123456789012.signin.aws.amazon.com/console/s3
การใช้ Access Keys
คุณสามารถดาวน์โหลดและติดตั้งเครื่องมือใด ๆ ของ บริษัท อื่นที่กล่าวถึงในบทความนี้ได้ ป้อนคีย์รหัสการเข้าถึงและคีย์การเข้าถึงข้อมูลลับต่อเอกสารของเครื่องมือของบุคคลที่สาม
ผมขอแนะนำให้คุณสร้างผู้ใช้เริ่มต้นและมีผู้ใช้ที่ทดสอบอย่างเต็มที่ว่าพวกเขาสามารถทำทุกอย่างที่จำเป็นต้องทำใน S3 ได้ หลังจากที่คุณยืนยันผู้ใช้ของคุณคุณสามารถดำเนินการตั้งค่าผู้ใช้ S3 ทั้งหมดของคุณได้