บทบาทและนโยบาย IAM
เขียนเอกสารนโยบาย JSON แนบนโยบายเข้ากับบทบาท และทำความเข้าใจความแตกต่างระหว่างนโยบายตามข้อมูลประจำตัวกับนโยบายตามทรัพยากร
บทบาทและนโยบาย IAM เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
นโยบาย IAM: ภาษาสำหรับกำหนดสิทธิ์
นโยบาย IAMคือเอกสาร JSON ที่ระบุว่าอนุญาตให้ทำอะไรได้บ้าง แต่ละคำสั่งประกอบด้วย Effect (Allow หรือ Deny), Action และ Resource โค้ดนี้แสดงตัวอย่างหนึ่งรายการ
{
'Version': '2012-10-17',
'Statement': [
{
'Effect': 'Allow',
'Action': [
's3:GetObject',
's3:PutObject'
],
'Resource': 'arn:aws:s3:::my-bucket/*'
}
]
}นโยบายตามข้อมูลระบุตัวตนเทียบกับนโยบายตามทรัพยากร
นโยบายตามข้อมูลระบุตัวตนจะแนบกับผู้ใช้หรือบทบาทและระบุว่าสามารถทำอะไรได้ ส่วนนโยบายตามทรัพยากรจะแนบกับทรัพยากรโดยตรงและระบุว่าใครสามารถเข้าถึงทรัพยากรนั้นได้
# Example S3 bucket policy (resource-based)
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::123456789012:role/MyAppRole'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*'
}]
}บทบาท IAM: ข้อมูลระบุตัวตนชั่วคราว
บทบาท IAMคือข้อมูลระบุตัวตนที่คุณรับมาใช้ชั่วคราว บทบาทนี้มอบข้อมูลรับรองชั่วคราวที่หมดอายุได้ จึงเหมาะสำหรับ EC2, Lambda และบริการอื่น ๆ
# Attach an IAM role to an EC2 instance (instance profile)
aws ec2 associate-iam-instance-profile \
--instance-id i-0abcdef1234567890 \
--iam-instance-profile Name=MyEC2Roleนโยบายความน่าเชื่อถือ: ใครสามารถรับบทบาทได้
ทุกบทบาทมีนโยบายความน่าเชื่อถือที่ระบุว่าใครได้รับอนุญาตให้รับบทบาทนั้น รวมถึงนโยบายสิทธิ์ที่ระบุว่าบทบาททำอะไรได้หลังจากถูกรับมา หากไม่มีนโยบายความน่าเชื่อถือ ก็จะไม่มีสิทธิ์เข้าถึง
# Trust policy for a Lambda execution role
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'lambda.amazonaws.com'
},
'Action': 'sts:AssumeRole'
}]
}บทบาทบริการ AWS: EC2 และ Lambda
เมื่อ EC2 จำเป็นต้องเรียกใช้ AWS ให้กำหนดโปรไฟล์อินสแตนซ์ที่ครอบบทบาทไว้ ข้อมูลรับรองจะหมุนเวียนโดยอัตโนมัติ จึงไม่ต้องฝังคีย์ไว้ในโค้ด Lambda ก็ทำงานในลักษณะเดียวกัน
# Retrieve role credentials from EC2 metadata (IMDSv2)
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
-H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/iam/security-credentials/MyEC2Roleการรับบทบาทข้ามบัญชี
บทบาทข้ามบัญชีช่วยให้ผู้ใช้ในบัญชีหนึ่งรับบทบาทในอีกบัญชีและเข้าถึงทรัพยากรของบัญชีนั้นได้ วิธีนี้ช่วยให้ระบบที่มีหลายบัญชีไม่ต้องสร้างผู้ใช้ซ้ำในทุกบัญชี
# Assume a cross-account role from Account A
aws sts assume-role \
--role-arn arn:aws:iam::999999999999:role/CrossAccountRole \
--role-session-name my-sessionเงื่อนไขของนโยบาย: การควบคุมแบบละเอียด
Conditionเพิ่มกฎเสริมให้กับนโยบาย เช่น กำหนดให้ต้องใช้ MFA หรือจำกัดการเข้าถึงตามช่วง IP หรือภูมิภาค วิธีนี้ทำให้สิทธิ์รัดกุมยิ่งขึ้น
# Policy that requires MFA for sensitive actions
{
'Effect': 'Deny',
'Action': ['iam:*', 'cloudtrail:*'],
'Resource': '*',
'Condition': {
'BoolIfExists': {
'aws:MultiFactorAuthPresent': 'false'
}
}
}ขอบเขตสิทธิ์
ขอบเขตสิทธิ์จำกัดสิทธิ์สูงสุดที่ข้อมูลระบุตัวตนหนึ่งรายการจะมีได้ แม้นโยบายจะมอบสิทธิ์มากกว่านั้นก็ตาม ขอบเขตนี้เป็นตาข่ายนิรภัยเมื่ออนุญาตให้นักพัฒนาสร้างบทบาทของตนเอง
# Attach a permissions boundary to a user
aws iam put-user-permissions-boundary \
--user-name alice \
--permissions-boundary arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccessตรรกะการประเมินนโยบาย
เมื่อ AWS ตรวจสอบคำขอ มีกฎหนึ่งที่มีความสำคัญสูงสุด: explicit Denyจะบล็อกคำขอเสมอ หลังจากนั้นนโยบายทุกชั้นต้องเห็นพ้องกันว่าจะอนุญาตการเข้าถึง
เครื่องจำลองนโยบาย IAM
เครื่องจำลองนโยบาย IAMใช้ทดสอบว่าข้อมูลระบุตัวตนสามารถทำบางสิ่งได้หรือไม่ โดยไม่ต้องดำเนินการจริง เหมาะสำหรับแก้ไขปัญหาสิทธิ์ก่อนนำไปใช้งาน
# Simulate an IAM policy evaluation via CLI
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789012:user/alice \
--action-names s3:PutObject \
--resource-arns arn:aws:s3:::my-bucket/*บทบาทสำหรับการเข้าถึงแบบรวมข้อมูลระบุตัวตน
ผู้ใช้ภายนอกจาก Okta, Google หรือ Active Directory สามารถรับบทบาทผ่านการรวมข้อมูลระบุตัวตน (SAML หรือ OIDC) คุณจึงมอบสิทธิ์ให้ผู้คนนับล้านได้โดยไม่ต้องสร้างผู้ใช้ IAM
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
สรุปอย่างรวดเร็ว: นโยบายคือกฎ JSON สำหรับ Allow และ Deny, บทบาทมอบข้อมูลรับรองชั่วคราว และเงื่อนไขช่วยควบคุมสิทธิ์แบบละเอียด หัวข้อถัดไป: สิทธิ์เท่าที่จำเป็น
คำถามที่พบบ่อย
บทเรียน “บทบาทและนโยบาย IAM” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “บทบาทและนโยบาย IAM” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “บทบาทและนโยบาย IAM”
เขียนเอกสารนโยบาย JSON แนบนโยบายเข้ากับบทบาท และทำความเข้าใจความแตกต่างระหว่างนโยบายตามข้อมูลประจำตัวกับนโยบายตามทรัพยากร คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “บทบาทและนโยบาย IAM” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม
ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ