4๋จ๊ณ: Management Console์์ AWS์ฉ API ํตํฉ์ ํ๋ก์ ์๋น์ค์ ์ฐ๊ฒฐํฉ๋๋ค.ยถ
์ด ํญ๋ชฉ์์๋ Snowflake์์ API ํตํฉ ์ค๋ธ์ ํธ๋ฅผ ํ๋ก์ ์๋น์ค(์ฆ, Amazon API Gateway)์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค. Snowflake์ ์ด์ ์ ๋ง๋ IAM(ID ๋ฐ ์ก์ธ์ค ๊ด๋ฆฌ) ์ญํ ์ฌ์ด์ ํธ๋ฌ์คํธ ๊ด๊ณ๋ฅผ ๋ง๋ค์ด ์ฐ๊ฒฐํฉ๋๋ค.
Management Console์ ์ฌ์ฉํ๋ , CloudFormation ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ด๊ณ์์ด ์ง์นจ์ ๋์ผํฉ๋๋ค.
์ด ํญ๋ชฉ์ ๋ด์ฉ:
์ด์ ๋จ๊ณยถ
Snowflake์ ์ IAM ์ญํ ์ฌ์ด์ ํธ๋ฌ์คํธ ๊ด๊ณ ์ค์ ํ๊ธฐยถ
AWS Management Console์์ ๋ค์์ ์ํํฉ๋๋ค.
IAM ์ ์ ํํฉ๋๋ค.
Roles ์ ์ ํํฉ๋๋ค.
์ํฌ์ํธ์
New IAM Role Name
ํ๋์์ ์ด ๊ฐ์ ์ฐพ์ ํ, AWS Management Console์์ ๊ฐ์ ๊ฐ(์ญํ ์ด๋ฆ)์ ์ฐพ์ต๋๋ค.Trust relationships ํญ์ ํด๋ฆญํ ๋ค์, Edit trust relationship ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ธ์ฆ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์๋ Policy Document ๊ฐ ์ด๋ฆฝ๋๋ค.
Policy Document ์์ Statement.Principal.AWS ํ๋๋ฅผ ์ฐพ์ (ํค๊ฐ ์๋๋ผ) ๊ฐ์ ์ํฌ์ํธ์
API_AWS_IAM_USER_ARN
ํ๋์ ์๋ ๊ฐ์ผ๋ก ๋ฐ๊ฟ๋๋ค.Statement.Condition ํ๋๋ฅผ ์ฐพ์ต๋๋ค. ์ฒ์์๋ ์ค๊ดํธ(โ{}โ)๋ง ํฌํจํด์ผ ํฉ๋๋ค.
์ค๊ดํธ ์ฌ์ด์ ๋ค์์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
"StringEquals": { "sts:ExternalId": "xxx" }
์ํฌ์ํธ์์
xxx
๋ฅผAPI_AWS_EXTERNAL_ID
ํ๋์ ๊ฐ์ผ๋ก ๋ฐ๊ฟ๋๋ค.ํธ๋ฌ์คํธ ๊ด๊ณ์ ๋ํ Policy Document ํธ์ง์ด ์๋ฃ๋๋ฉด ๋ค์๊ณผ ๋น์ทํ ํํ์ผ ๊ฒ์ ๋๋ค.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567898012:user/development/development_user" }, "Action": "sts:AssumeRole", "Condition": {"StringEquals": { "sts:ExternalId": "EXTERNAL_FUNCTIONS_SFCRole=3_8Hcmbi9halFOkt+MdilPi7rdgOv=" }} } ] }
Update Trust Policy ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ค์ ๋จ๊ณยถ
5๋จ๊ณ: Snowflake์์ AWS๋ฅผ ์ํ ์ธ๋ถ ํจ์ ๋ง๋ค๊ธฐ