AWS IAM — STS
Amazon Security Token Service (AWS STS) คือ web service ที่ช่วยให้เราสามารถ request temporary credential ของ AWS ได้โดย user ที่ได้จะมีสิทธิ์ที่ขึ้นกับเราตั้งและจัดการไว้
ส่วนที่จะพูดถึง API นึงของ AWS STS ก็คือ AssumeRoleWithWebIdentity ซึ่งทําหน้าที่ ให้ Temporary Security Credentials สําหรับ user ที่ทําการ authenticated สําเร็จนั้นเอง
โดยทั่วไปแล้ว ถ้าเราเลือกใช้ AWS Cognito สิ่งที่ Cognito จัดการให้ก็คือการไปเรียกที่ STS เองนี้แหละ เราจะไม่ต้องวุ่นวายกับการจัดการโค้ดส่วนนี้เลย

แต่ถ้าเรามี application ที่เขียนขึ้นมาเพื่อนใช้ web identity federation แบบ manual แล้ว เราก็สามารถใช้ AWS STS (assume-role-with-web-identity API) แทนเพื่อที่จะได้ access credential และเข้าถึง AWS Cloud ได้เหมือนกัน
ซึ่งทาง AWS เองก็มีตัวอย่างในการเรียกใช้ตามตัวอย่างนี้เหมือนกัน https://aws.amazon.com/blogs/aws/the-aws-web-identity-federation-playground/
AssumeRole จริงๆแล้วคืออะไร?
เป็น temporary security credential ที่เราสามารถนําไปใช้ในการเข้าถึง AWS resources ต่างๆได้ โดยมันประกอบด้วย access key ID, a secret access key และ ก็ security token
ประโยชน์ของมันคือบางที่เรามี account ที่มี authentication อยู่แล้วในระบบ เราไม่จําเป็นต้องสร้าง user identities ใหม่ให้อีก account เราเพียงแค่ใช้ assumerole นั้นเพื่อเอา temporary security credential มาใช้ได้เลย
โดยการใช้ AssumeRole เราสามารถนําไปใช้ร่วมกันได้หลายอย่างมาก โดยแค่เรากําหนด Principal ให้กับ Policy นั้นๆว่าต้องการจะให้ใครใช้ เช่น
- AWS services
ซึ่งเราจะใส่ Principal เป็น service และกําหนด sts:AssumeRole ใน action เช่น ตัวอย่างจะหมายถึง เราให้ EMR และ Data pipeline สามารถ assume role ได้

แล้วหลังจากนั้นเราค่อยไป add policy ที่ต้องการให้กับ Role นี้อีกที เพื่อให้สามารถดึง policy ที่ต้องการใช้ได้นั้นเอง
- IAM users
- Federated Web Identity Users
