Cognito Identity Pools
Basic Information
์์ด๋ดํฐํฐ ํ์ ์ฌ์ฉ์๊ฐ ์์ ์๊ฒฉ ์ฆ๋ช ์ ํ๋ํ ์ ์๋๋ก ํ์ฌ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฌํ ์๊ฒฉ ์ฆ๋ช ์ Amazon S3 ๋ฐ DynamoDB๋ฅผ ํฌํจํ ๋ค์ํ AWS ์๋น์ค์ ์ ๊ทผํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์์ด๋ดํฐํฐ ํ์ ์ฃผ๋ชฉํ ๋งํ ๊ธฐ๋ฅ์ ์ต๋ช ๊ฒ์คํธ ์ฌ์ฉ์์ ์ฌ์ฉ์ ์ธ์ฆ์ ์ํ ๋ค์ํ ์์ด๋ดํฐํฐ ์ ๊ณต์๋ฅผ ์ง์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ง์๋๋ ์์ด๋ดํฐํฐ ์ ๊ณต์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
Amazon Cognito ์ฌ์ฉ์ ํ
Facebook, Google, Amazon์ผ๋ก ๋ก๊ทธ์ธ, Apple๋ก ๋ก๊ทธ์ธ๊ณผ ๊ฐ์ ์์ ๋ก๊ทธ์ธ ์ต์
OpenID Connect (OIDC) ์ค์ ์ ๊ณต์
SAML (Security Assertion Markup Language) ์์ด๋ดํฐํฐ ์ ๊ณต์
๊ฐ๋ฐ์ ์ธ์ฆ ์์ด๋ดํฐํฐ
Cognito Sync
Identity Pool ์ธ์ ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ Identity ID๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์ด Identity ID๋ ํด๋น ์ฌ์ฉ์์ ์ธ์ ์๋ณ์์ ๋๋ค. ์ด๋ฌํ ์๋ณ์๋ ์ต๋ 20๊ฐ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ฐ ๋ฐ์ดํฐ ์ธํธ๋ ์ต๋ 1MB์ ํค-๊ฐ ์์ ์ ์ฅํ ์ ์์ต๋๋ค.
์ด๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค (ํญ์ ๋์ผํ Identity ID๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์).
๊ฒ๋ค๊ฐ, ์๋น์ค cognito-sync๋ ์ด ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ณ ๋๊ธฐํํ ์ ์๋ ์๋น์ค์ ๋๋ค (๋ฐ์ดํฐ ์ธํธ์์, ์คํธ๋ฆผ ๋ฐ SNS ๋ฉ์์ง๋ก ์ ๋ณด๋ฅผ ์ ์กํ๋ ๋ฑ).
Tools for pentesting
Pacu, AWS ์ทจ์ฝ์ ํ์ง ํ๋ ์์ํฌ๋ ์ด์ "cognito__enum" ๋ฐ "cognito__attack" ๋ชจ๋์ ํฌํจํ์ฌ ๊ณ์ ์ ๋ชจ๋ Cognito ์์ฐ์ ์๋์ผ๋ก ์ด๊ฑฐํ๊ณ ์ฝํ ๊ตฌ์ฑ, ์ ๊ทผ ์ ์ด์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ์์ฑ ๋ฑ์ ํ๋๊ทธํ๋ฉฐ, ์ฌ์ฉ์ ์์ฑ(์ฌ๊ธฐ์๋ MFA ์ง์ ํฌํจ) ๋ฐ ์์ ๊ฐ๋ฅํ ์ฌ์ฉ์ ์ ์ ์์ฑ, ์ฌ์ฉ ๊ฐ๋ฅํ Identity Pool ์๊ฒฉ ์ฆ๋ช , ID ํ ํฐ์์ ๊ฐ์ ๊ฐ๋ฅํ ์ญํ ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ถํ ์์น์ ์๋ํํฉ๋๋ค.
๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ 2๋ถ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ค์น ์ง์นจ์ ์ฃผ์ Pacu ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
Usage
์ฃผ์ด์ง Identity Pool ๋ฐ ์ฌ์ฉ์ ํ ํด๋ผ์ด์ธํธ์ ๋ํด ์ฌ์ฉ์ ์์ฑ ๋ฐ ๋ชจ๋ ๊ถํ ์์น ๋ฒกํฐ๋ฅผ ์๋ํ๋ ์ํ cognito__attack ์ฌ์ฉ๋ฒ:
์ํ cognito__enum ์ฌ์ฉ๋ฒ์ผ๋ก ํ์ฌ AWS ๊ณ์ ์์ ๋ณผ ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์ ํ, ์ฌ์ฉ์ ํ ํด๋ผ์ด์ธํธ, ์์ด๋ดํฐํฐ ํ, ์ฌ์ฉ์ ๋ฑ์ ์์งํฉ๋๋ค:
Cognito Scanner๋ ์์น ์๋ ๊ณ์ ์์ฑ ๋ฐ ์์ด๋ดํฐํฐ ํ ์์น์ ํฌํจํ์ฌ Cognito์ ๋ํ ๋ค์ํ ๊ณต๊ฒฉ์ ๊ตฌํํ๋ ํ์ด์ฌ CLI ๋๊ตฌ์ ๋๋ค.
์ค์น
์ฌ์ฉ๋ฒ
๋ ๋ง์ ์ ๋ณด๋ https://github.com/padok-team/cognito-scanner ๋ฅผ ํ์ธํ์ธ์.
IAM ์ญํ ์ ๊ทผ
์ธ์ฆ๋์ง ์์
๊ณต๊ฒฉ์๊ฐ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๋ก์ Cognito ์ฑ์์ AWS ์๊ฒฉ ์ฆ๋ช
์ ์ป๊ธฐ ์ํด ์์์ผ ํ ์ ์ผํ ๊ฒ์ Identity Pool ID์ด๋ฉฐ, ์ด ID๋ ์น/๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋์ฝ๋ฉ๋์ด ์์ด์ผ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ID๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์
๋๋ค: eu-west-1:098e5341-8364-038d-16de-1865e435da3b
(๋ฌด์์ ๋์
๊ณต๊ฒฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค).
๊ธฐ๋ณธ์ ์ผ๋ก IAM Cognito ์ธ์ฆ๋์ง ์์ ์ญํ ์ Cognito_<Identity Pool name>Unauth_Role
๋ก ํธ์ถ๋ฉ๋๋ค.
ํ๋์ฝ๋ฉ๋ Identity Pools ID๋ฅผ ์ฐพ๊ณ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ, ๋ค์์ ์ฌ์ฉํ์ฌ AWS ์๊ฒฉ ์ฆ๋ช ์ ์ป์ ์ ์์ต๋๋ค:
๋๋ ๋ค์ aws cli ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ๋์ง ์์ cognito ์ฌ์ฉ์๋ ์ ์ฑ ์ ํตํด ํ ๋น๋์๋๋ผ๋ ์ด๋ค ๊ถํ๋ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ค์ ์น์ ์ ํ์ธํ์ธ์.
ํฅ์๋ ์ธ์ฆ ํ๋ฆ vs ๊ธฐ๋ณธ ์ธ์ฆ ํ๋ฆ
์ด์ ์น์ ์ ๊ธฐ๋ณธ ํฅ์๋ ์ธ์ฆ ํ๋ฆ์ ๋ฐ๋์ต๋๋ค. ์ด ํ๋ฆ์ ์์ฑ๋ IAM ์ญํ ์ธ์ ์ ์ ํ์ ์ธ ์ธ์ ์ ์ฑ ์ ์ค์ ํฉ๋๋ค. ์ด ์ ์ฑ ์ ์ธ์ ์ด ์ด ๋ชฉ๋ก์ ์๋น์ค๋ง ์ฌ์ฉํ๋๋ก ํ์ฉํฉ๋๋ค (์ญํ ์ด ๋ค๋ฅธ ์๋น์ค์ ์ ๊ทผํ ์ ์๋๋ผ๋).
๊ทธ๋ฌ๋ Identity pool์ "๊ธฐ๋ณธ (ํด๋์) ํ๋ฆ"์ด ํ์ฑํ๋์ด ์์ผ๋ฉด, ์ฌ์ฉ์๋ ํด๋น ํ๋ฆ์ ์ฌ์ฉํ์ฌ ์ธ์ ์ ์ป์ ์ ์์ผ๋ฉฐ, ์ด ์ธ์ ์ ์ ํ์ ์ธ ์ธ์ ์ ์ฑ ์ด ์์ต๋๋ค.
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, ๊ธฐ๋ณธ ํ๋ฆ์ด ํ์ฑํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค (๊ธฐ๋ณธ๊ฐ)
An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.
IAM ์๊ฒฉ ์ฆ๋ช ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ค ์ ๊ทผ ๊ถํ์ด ์๋์ง ํ์ธํ๊ณ ๊ถํ ์์น์ ์๋ํด์ผ ํฉ๋๋ค.
์ธ์ฆ๋ ์ฌ์ฉ์
์ธ์ฆ๋ ์ฌ์ฉ์๋ ์๋ง๋ ๋ค๋ฅธ ๊ถํ์ด ๋ถ์ฌ๋ ๊ฒ์ด๋ฏ๋ก, ์ฑ ๋ด์์ ๊ฐ์ ํ ์ ์๋ค๋ฉด, ๊ทธ๋ ๊ฒ ์๋ํ์ฌ ์๋ก์ด ์๊ฒฉ ์ฆ๋ช ์ ์ป์ผ์ธ์.
Identity Pool์ ์ ๊ทผํ๋ ์ธ์ฆ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ญํ ์ด ์์ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด ์์ด๋ดํฐํฐ ์ ๊ณต์์ ์ ๊ทผํด์ผ ํ ์๋ ์์ต๋๋ค. ๋ง์ฝ ๊ทธ๊ฒ์ด Cognito ์ฌ์ฉ์ ํ์ด๋ผ๋ฉด, ๊ธฐ๋ณธ ๋์์ ์ ์ฉํ์ฌ ์ ์ฌ์ฉ์๋ฅผ ์ง์ ์์ฑํ ์ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค.
IAM Cognito ์ธ์ฆ ์ญํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก Cognito_<Identity Pool name>Auth_Role
๋ก ์์ฑ๋ฉ๋๋ค.
์ด์จ๋ , ๋ค์ ์์ ๋ Identity Pool์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ Cognito ์ฌ์ฉ์ ํ์ ์ด๋ฏธ ๋ก๊ทธ์ธํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค (๋ค๋ฅธ ์ ํ์ ์์ด๋ดํฐํฐ ์ ๊ณต์๋ ๊ตฌ์ฑ๋ ์ ์๋ค๋ ์ ์ ์์ง ๋ง์ธ์).
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ ์์ด๋ดํฐํฐ ์ ๊ณต์์ ๋ฐ๋ผ ๋ค๋ฅธ IAM ์ญํ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค ๋๋ ์ฌ์ฉ์์ ๋ฐ๋ผ (ํด๋ ์์ ์ฌ์ฉํ์ฌ) ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ๋๋ ๋ค๋ฅธ ์ ๊ณต์๋ฅผ ํตํด ๋ค์ํ ์ฌ์ฉ์์ ์ ๊ทผํ ์ ์๋ค๋ฉด, ๋ชจ๋ ์ฌ์ฉ์์ IAM ์ญํ ์ ๋ก๊ทธ์ธํ๊ณ ์ ๊ทผํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค.
Last updated