AWS IAM — STS

Mart — Tanathip Viriya
2 min readJun 3, 2020

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 เองนี้แหละ เราจะไม่ต้องวุ่นวายกับการจัดการโค้ดส่วนนี้เลย

Example flow login with IdP Amazon and STS have been called

แต่ถ้าเรามี 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 ได้
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_more-info

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

  • IAM users
  • Federated Web Identity Users
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_more-info

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response