์ด ํ์ด์ง์์๋ IAP(Identity-Aware Proxy) TCP ์ ๋ฌ์ ์ฌ์ฉํ์ฌ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๊ฑฐ๋ ์ธํฐ๋ท์ ํตํ ์ง์ ์ก์ธ์ค๋ฅผ ํ์ฉํ์ง ์๋ VM ์ธ์คํด์ค์ ๋ํ ๊ด๋ฆฌ ์ก์ธ์ค๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ๋ฉด SSH, RDP, ๊ธฐํ ํธ๋ํฝ์ VM ์ธ์คํด์ค๋ก ์ ๋ฌํ ์ ์๋ ์ํธํ๋ ํฐ๋์ ์ค์ ํ ์ ์์ต๋๋ค. IAP TCP ์ ๋ฌ์ ๋ํ ํฐ๋์ ์ค์ ํ ์ ์๋ ์ฌ์ฉ์์ ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐํ ์ ์๋ VM ์ธ์คํด์ค๋ฅผ ์ธ๋ถ์ ์ผ๋ก ์ ์ดํ ์ ์๊ฒ ํฉ๋๋ค.
IAP TCP ์ ๋ฌ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ TCP ์ ๋ฌ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
IAP TCP ์ ๋ฌ์ ์ํ ํ๋ก์ ํธ ์ค๋น
์ด ์น์ ์์๋ Google Cloud ํ๋ก์ ํธ์์ IAP TCP ์ ๋ฌ์ ์ฌ์ฉ ์ค์ ํ๋ ๋ฐ ํ์ํ ๋จ๊ณ๋ฅผ ์๋ดํฉ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ
IAP๊ฐ VM ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋๋ก ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋์ธ์.
- IAP๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ VM ์ธ์คํด์ค์ ์ ์ฉ๋ฉ๋๋ค.
- IP ๋ฒ์
35.235.240.0/20
์์์ ์ธ๊ทธ๋ ์ค ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค. ์ด ๋ฒ์์๋ IAP๊ฐ TCP ์ ๋ฌ์ ์ํด ์ฌ์ฉํ๋ ๋ชจ๋ IP ์ฃผ์๊ฐ ํฌํจ๋ฉ๋๋ค.IPv6 VM์ ๊ฒฝ์ฐ
2600:2d00:1:7::/64
IP ๋ฒ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. - IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ํฌํธ(์: SSH์ ๊ฒฝ์ฐ ํฌํธ
22
๋ฐ RDP์ ๊ฒฝ์ฐ ํฌํธ3389
)์ ๋ํ ์ฐ๊ฒฐ์ ํ์ฉํฉ๋๋ค.
์ฝ์
๋คํธ์ํฌ์ ๋ชจ๋ VM ์ธ์คํด์ค์ ๋ํ RDP ๋ฐ SSH ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๋ฐฉํ๋ฒฝ ๊ท์น ํ์ด์ง๋ฅผ ์ฝ๋๋ค.
๋ฐฉํ๋ฒฝ ๊ท์น ํ์ด์ง ์ด๊ธฐ
๋๋จธ์ง ๋จ๊ณ๋ Google Cloud ์ฝ์์ ํ์๋ฉ๋๋ค.
- Google Cloud ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
ํ์ธํด ๋ณด๊ธฐ - ๋ฐฉํ๋ฒฝ ๊ท์น ํ์ด์ง์์
๋ฐฉํ๋ฒฝ ๊ท์น ๋ง๋ค๊ธฐ ๋ฅผ ํด๋ฆญํฉ๋๋ค. - ๋ค์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ด๋ฆ:
allow-ingress-from-iap
- ํธ๋ํฝ ๋ฐฉํฅ: ์ธ๊ทธ๋ ์ค
- ๋์: ๋คํธ์ํฌ์ ๋ชจ๋ ์ธ์คํด์ค
- ์์ค ํํฐ: IP ๋ฒ์
- ์์ค IP ๋ฒ์:
35.235.240.0/20
- ํ๋กํ ์ฝ ๋ฐ ํฌํธ: TCP๋ฅผ ์ ํํ๊ณ
22,3389
๋ฅผ ์ ๋ ฅํ์ฌ RDP ๋ฐ SSH๋ฅผ ๋ชจ๋ ํ์ฉํ์ธ์.
- ์ด๋ฆ:
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
๋คํธ์ํฌ์ ๋ชจ๋ VM ์ธ์คํด์ค์ ๋ํ RDP ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์.
gcloud compute firewall-rules create allow-rdp-ingress-from-iap \ --direction=INGRESS \ --action=allow \ --rules=tcp:3389 \ --source-ranges=35.235.240.0/20
SSH ์ก์ธ์ค์ ๊ฒฝ์ฐ ๋ค์์ ์คํํ์ธ์.
gcloud compute firewall-rules create allow-ssh-ingress-from-iap \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
๋ค๋ฅธ ํ๋กํ ์ฝ์ ๊ฒฝ์ฐ ๋ค์์ ์คํํ์ธ์.
gcloud compute firewall-rules create allow-ingress-from-iap \ --direction=INGRESS \ --action=allow \ --rules=tcp:PORT \ --source-ranges=35.235.240.0/20
์ฌ๊ธฐ์ PORT
๋ ํ๋กํ ์ฝ์ด ์ฌ์ฉํ๋ ํฌํธ์
๋๋ค.
IAP TCP ์ ๋ฌ์ ์ํ ์ญํ ๋ถ์ฌ
IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ ์ ์๋ ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน๊ณผ ์ฐ๊ฒฐํ ์ ์๋ VM ์ธ์คํด์ค๋ฅผ ์ ์ดํ๋ ค๋ฉด ํ๋ก์ ํธ์ ๋ํด ์ ์ ํ Identity and Access Management(IAM) ์ญํ ์ ๋ถ์ฌํ์ธ์.
OS ๋ก๊ทธ์ธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ(๊ถ์ฅ) ์ฌ์ฉ์ ๊ณ์ ์ OS ๋ก๊ทธ์ธ ์ญํ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ํ์์๋ TCP ์ ๋ฌ ๋ฐ ๊ด๋ จ ํ์คํฌ์ ๋ํด ์ ๋ขฐํ ์ ์๋ ๊ด๋ฆฌ์์๊ฒ ๋ถ์ฌํด์ผ ํ๋ ์ฌ์ ์ ์๋ ์ญํ ์ ๋ณด์ฌ์ค๋๋ค.
์์ | ์ญํ | ์ถ๊ฐ ์ ๋ณด |
---|---|---|
TCP ์ ๋ฌ |
IAP ๋ณด์ ํฐ๋ ์ฌ์ฉ์(roles/iap.tunnelResourceAccessor )
|
ํ๋ก์ ํธ์ ๋ชจ๋ VM ์ธ์คํด์ค์ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ ๋๋ ํน์ VM์ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ๋ฅผ ์ฐธ์กฐํ์ธ์. |
SSH ์ก์ธ์ค ๊ถํ |
Compute ์ธ์คํด์ค ๊ด๋ฆฌ์(v1)(roles/compute.instanceAdmin.v1 )
|
|
์๋น์ค ๊ณ์ ์ฌ์ฉ | ์๋น์ค ๊ณ์ ์ฌ์ฉ์(roles/iam.serviceAccountUser ) |
serviceAccountUser ์ญํ ์ ์ฐธ์กฐํ์ธ์. |
์ด ํ์คํฌ์ ํ์ํ ํน์ ๊ถํ๋ง ํฌํจ๋ ์ปค์คํ ์ญํ ์ ๋ง๋ค๋ ค๋ฉด ๊ถํ ์ธ๋ถ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ํ ์ญํ ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ํ๋ก์ ํธ์ ๋ชจ๋ VM ์ธ์คํด์ค ๋๋ ํน์ VM์ ์ฌ์ฉ์ ๋๋ ๊ทธ๋ฃน ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
ํ๊ทธ๊ฐ ์ง์๋์ง ์์
IAP TCP ์ ๋ฌ์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๊ถํ ๋ถ์ฌ๋ ํ์ฌ ์ง์๋์ง ์์ต๋๋ค.
ํ๋ก์ ํธ์ ๋ชจ๋ VM ์ธ์คํด์ค์ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ
ํ๋ก์ ํธ ์์ค์์ ํ์ํ IAM ์ญํ ์ ๋ถ์ฌํ์ฌ ํ๋ก์ ํธ์ ๋ชจ๋ VM ์ธ์คํด์ค์ ์ฌ์ฉ์ ๋๋ ๊ทธ๋ฃน ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค.
์ฝ์
- Google Cloud ์ฝ์์์ IAM ๋ฐ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ฝ๋๋ค.
IAM ๋ฐ ๊ด๋ฆฌ์ ํ์ด์ง ์ด๊ธฐ
๋๋จธ์ง ๋จ๊ณ๋ Google Cloud ์ฝ์์ ํ์๋ฉ๋๋ค.
- IAM ๋ฐ ๊ด๋ฆฌ์ ํ์ด์ง์์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค์์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ ์ฃผ ๊ตฌ์ฑ์: ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ์ง์ ํฉ๋๋ค.
- ์ญํ ์ ํ Cloud IAP > IAP ๋ณด์ ํฐ๋ ์ฌ์ฉ์๋ฅผ ์ ํํฉ๋๋ค.
- ํ์ํ ๊ฒฝ์ฐ ์กฐ๊ฑด ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์กฐ๊ฑด์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ ๋ชฉ: ์กฐ๊ฑด ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ํํ์: IAP ๋ณด์ ํฐ๋ ์ฌ์ฉ์ ์ญํ ์ ๊ถํ์ ์ป๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ถฉ์กฑํด์ผ ํ๋ ์กฐ๊ฑด์ ์ ๋ ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ CEL ํํ์์ ํฌํธ 22์ ๋ํ ์ก์ธ์ค ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค.
destination.port == 22
์ก์ธ์ค ์์ค์ ๋ฐ๋ผ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์๋ ์์ต๋๋ค.
destination.port == 22 && "FULL_ACCESS_LEVEL_NAME" in request.auth.access_levels
FULL_ACCESS_LEVEL_NAME
์ ๊ธฐ์กด ์ก์ธ์ค ์์ค์ด๋ฉฐ ๋ค์ ํ์์ ์ฌ์ฉํฉ๋๋ค.accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
- ๋ค๋ฅธ ์ญํ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค์์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ญํ ์ ํ์์ Compute Engine > Compute ์ธ์คํด์ค ๊ด๋ฆฌ์(v1)๋ฅผ ์ ํํฉ๋๋ค.
- ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ์ง ์ญํ ์ ๋ถ์ฌํ์ธ์.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:EMAIL \ --role=roles/iap.tunnelResourceAccessor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:EMAIL \ --role=roles/compute.instanceAdmin.v1
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ํ๋ก์ ํธ์ IDEMAIL
: ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ค๋ ์ฌ์ฉ์์ ์ด๋ฉ์ผ ์ฃผ์(์:user@example.com
)
ํน์ VM์ ๋ํ ์ก์ธ์ค ๊ถํ ๋ถ์ฌ
์ฌ์ฉ์ ๋๋ ๊ทธ๋ฃน์ ํน์ VM์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ค๋ฉด ํด๋น VM์์ roles/iap.tunnelResourceAccessor
์ญํ ์ ๋ถ์ฌํฉ๋๋ค. ๋ค๋ฅธ ์ญํ ์ ํ๋ก์ ํธ์ ๋ถ์ฌ๋์ด ์์ด์ผ ํฉ๋๋ค.
์ฝ์
- IAP ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ด๊ณ SSH ๋ฐ TCP ๋ฆฌ์์ค ํญ์ ์ ํํฉ๋๋ค.
Chrome Enterprise Premium ๊ด๋ฆฌ ํ์ด์ง ์ด๊ธฐ
๋๋จธ์ง ๋จ๊ณ๋ Google Cloud ์ฝ์์ ํ์๋ฉ๋๋ค.
- IAP ๊ด๋ฆฌ ํ์ด์ง์ SSH ๋ฐ TCP ๋ฆฌ์์ค ํญ์์ ๊ตฌ์ฑํ VM ์ธ์คํด์ค๋ฅผ ์ ํํฉ๋๋ค.
- ์ ๋ณด ํจ๋์ด ๋ณด์ด์ง ์์ผ๋ฉด ์ ๋ณด ํจ๋ ํ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฃผ ๊ตฌ์ฑ์ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ๋ค์์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ ์ฃผ ๊ตฌ์ฑ์: ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ์ง์ ํฉ๋๋ค.
- ์ญํ ์ ํ Cloud IAP > IAP ๋ณด์ ํฐ๋ ์ฌ์ฉ์๋ฅผ ์ ํํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์กฐ๊ฑด ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์กฐ๊ฑด์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ ๋ชฉ: ์กฐ๊ฑด ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ํํ์: IAP ๋ณด์ ํฐ๋ ์ฌ์ฉ์ ์ญํ ์ ๊ถํ์ ์ป๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ถฉ์กฑํด์ผ ํ๋ ์กฐ๊ฑด์ ์ ๋ ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ CEL ํํ์์ ํฌํธ 22์ ๋ํ ์ก์ธ์ค ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค.
destination.port == 22
์ก์ธ์ค ์์ค์ ๋ฐ๋ผ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์๋ ์์ต๋๋ค.
destination.port == 22 &&
"FULL_ACCESS_LEVEL_NAME" in request.auth.access_levels
FULL_ACCESS_LEVEL_NAME
์ ๊ธฐ์กด ์ก์ธ์ค ์์ค์ด๋ฉฐaccessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
ํ์์ ์ฌ์ฉํฉ๋๋ค.- ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
API
์ ํ๋ฆฌ์ผ์ด์
์ policy.json
ํ์ผ์ ํธ์งํ๋ ค๋ฉด ์๋ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ฅด์ธ์.
IAM API๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์ค ์ ์ฑ
์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ Chrome Enterprise Premium ๋ณด์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ค์ ๋ณ์๋ฅผ ๋ด๋ณด๋ ๋๋ค.
export IAP_BASE_URL=https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_tunnel # Replace POLICY_FILE.JSON with the name of JSON file to use for setIamPolicy export JSON_NEW_POLICY=POLICY_FILE.JSON
getIamPolicy
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Compute Engine ์ธ์คํด์ค์ IAM ์ ์ฑ ์ ๊ฐ์ ธ์ต๋๋ค. ๋ง์ง๋ง์ ๋น์ด ์๋ ๋ฐ์ดํฐ ๋นํธ๋curl
์์ฒญ์ GET ๋์ POST๋ก ์ ํํฉ๋๋ค.curl -i -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:getIamPolicy \ -d ''
IAM ์ ์ฑ JSON ํ์ผ์ ์์ ํ์ฌ ์ฃผ ๊ตฌ์ฑ์์๊ฒ
iap.tunnelResourceAccessor
์ญํ ์ ๋ถ์ฌํฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ IAM ์กฐ๊ฑด ๋ฐ ์ก์ธ์ค ์์ค์ ๋ฐ๋ผ ํน์ ๊ธฐ์ค์ ์ถฉ์กฑํ๋ ์ฃผ ๊ตฌ์ฑ์์๊ฒ๋ง ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
๋ค์์
iap.tunnelResourceAccessor
์ญํ ์ VM ์ธ์คํด์ค ๊ด๋ฆฌ์ ๊ทธ๋ฃน์ ๋ถ์ฌํ์ฌ Chrome Enterprise Premium ๋ณด์ ํฐ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ์์ ๋policy.json
ํ์ผ์ ์์์ ๋๋ค.destination.ip
๋ฐdestination.port
IAM ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ํฌํธ22
์์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ10.0.0.1
์ธ VM ์ธ์คํด์ค ๊ด๋ฆฌ์ ๊ทธ๋ฃน์ ์ฃผ ๊ตฌ์ฑ์๋ง ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋๋ก IAM ์กฐ๊ฑด์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ํ ACCESS_LEVEL_NAME ์ก์ธ์ค ์์ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.์ฃผ ๊ตฌ์ฑ์์๊ฒ ์์ ์ ์ญํ ์ด ์๋ ๊ฒฝ์ฐ TCP ์ ๋ฌ์ IAP๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ถํ์ด ์์ต๋๋ค.
์์ policy.json ํ์ผ{ "policy": { "bindings": [ { "role": "roles/iap.tunnelResourceAccessor", "members": ["group:instance-admins@example.com"], "condition": { "expression": "\"accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME\" in request.auth.access_levels && destination.ip == \"10.0.0.1\" && destination.port == 22", "title": "CONDITION_NAME" } } ] } }
์ ์ฑ ์ด๋ฆ์ ์ฐพ์ผ๋ ค๋ฉด
accessPolicies.list
๋ฅผ ํธ์ถํฉ๋๋ค.GET https://accesscontextmanager.googleapis.com/v1/accessPolicies
setIamPolicy
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์policy.json
ํ์ผ์ ์ค์ ํฉ๋๋ค.curl -i -H "Content-Type:application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ ${IAP_BASE_URL}/zones/ZONE_NAME/instances/INSTANCE_ID or INSTANCE_NAME:setIamPolicy \ -d @${JSON_NEW_POLICY}
๊ถํ ์ธ๋ถ์ ๋ณด
ํ์ ๊ถํ์ ์ฌ์ฉ์๊ฐ IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ค.
์๋๋ฆฌ์ค | ๊ถํ ํ์ | |
---|---|---|
์ ์ฒด |
|
|
gcloud compute [start-iap-tunnel, ssh, scp] ์ฌ์ฉ |
|
|
gcloud compute [ssh, scp] ์ฌ์ฉ |
|
|
OS ๋ก๊ทธ์ธ์ ์ฌ์ฉํ๋ VM | ์ด ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์. | |
OS ๋ก๊ทธ์ธ์ ์ฌ์ฉํ์ง ์์ |
|
|
์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ SSH๋ฅผ ํตํด VM์ ์ฐ๊ฒฐ |
|
|
๋ธ๋ผ์ฐ์ ์์ SSH๋ฅผ ํตํด ์ฐ๊ฒฐ | ์ด ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ OS ๋ก๊ทธ์ธ์ ์ฌ์ฉํ์ง ์์ง๋ง ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ VM์ gcloud compute ssh
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค.
iap.tunnelInstances.accessViaIAP
compute.instances.get
compute.instances.list
compute.projects.get
compute.instances.setMetadata
compute.projects.setCommonInstanceMetadata
compute.globalOperations.get
iam.serviceAccounts.actAs
SSH ์ฐ๊ฒฐ ํฐ๋๋ง
IAP๋ฅผ ํตํด SSH ํธ๋ํฝ์ ํฐ๋๋งํ์ฌ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ Linux ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
IAP ํฐ๋๋ง์ ์ฌ์ฉํ๋ฉด IAP ํ๋ก์๊ฐ VM์ ๊ธฐ๋ณธ ๋ด๋ถ IPv4 ์ฃผ์์ธ nic0
์ ์ฐ๊ฒฐํฉ๋๋ค.
Console
์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด Google Cloud ์ฝ์์์ SSH ๋ฒํผ์ ์ฌ์ฉํฉ๋๋ค. ์ธ์คํด์ค์ ์ก์ธ์ค ๊ตฌ์ฑ(IAM ๊ถํ์ ํตํด ์ ์)์ IAP๋ฅผ ํตํ TCP ํฐ๋๋ง์ ํ์ฉํด์ผ ํฉ๋๋ค.
gcloud
์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด gcloud compute ssh
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ์คํด์ค์ ์ก์ธ์ค ๊ตฌ์ฑ(IAM ๊ถํ์ ํตํด ์ ์)์ IAP๋ฅผ ํตํ TCP ํฐ๋๋ง์ ํ์ฉํด์ผ ํฉ๋๋ค.
gcloud compute ssh INSTANCE_NAME
INSTANCE_NAME์ SSH๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ธ์คํด์ค์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ธ์คํด์ค์ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ์๋์ผ๋ก IAP TCP ํฐ๋๋ง์ ์ฌ์ฉํฉ๋๋ค. ์ธ์คํด์ค์ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ IAP TCP ํฐ๋๋ง ๋์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute ssh
๊ฐ ํญ์ IAP TCP ํฐ๋๋ง์ ์ฌ์ฉํ๋๋ก --tunnel-through-iap
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gcloud compute ssh
๊ฐ IAP TCP ํฐ๋๋ง์ ์ฌ์ฉํ์ง ์๊ณ VM์ ๋ด๋ถ IP์ ์ง์ ์ฐ๊ฒฐํ๋๋ก --internal-ip
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ VM๊ณผ ๋์ผํ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์ ์ ์ฉํฉ๋๋ค.
IAP ๋ฐ์คํฌํฑ
IAP ๋ฐ์คํฌํฑ์ ์ฌ์ฉํ๋ฉด SSH ๋ฐ IAP TCP ์ ๋ฌ์ ํตํด VM ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ผ > Google Cloud ํ๋ก์ ํธ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.
ํ๋ก์ ํธ์ ID ๋๋ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
ํ๋ก์ ํธ ํ์๊ธฐ ์ฐฝ์์ ์ฐ๊ฒฐํ๋ ค๋ VM ์ธ์คํด์ค๋ฅผ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํ๊ณ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
IAP ๋ฐ์คํฌํฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ํ๋ก์ ํธ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
PuTTY ์ฑ
IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ์ฌ VM ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋๋ก PuTTY Windows ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ ์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ธ์คํด์ค์ ์ก์ธ์ค ๊ตฌ์ฑ(IAM ๊ถํ์ ํตํด ์ ์)์ IAP๋ฅผ ํตํ TCP ํฐ๋๋ง์ ํ์ฉํด์ผ ํฉ๋๋ค.
PuTTY ์ฑ์ ๊ตฌ์ฑํ๊ธฐ ์ ์ gcloud compute ssh
๋ช
๋ น์ด๋ฅผ ํ ๋ฒ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์ปดํจํฐ์ ๋น๊ณต๊ฐ SSH ํค๊ฐ ์๊ณ ๊ณต๊ฐ SSH ํค๊ฐ Compute Engine์ ๊ฒ์๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ VM ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
gcloud compute ssh INSTANCE_NAME ` --tunnel-through-iap ` --project PROJECT_ID ` --zone ZONE
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- INSTANCE_NAME: ์ฐ๊ฒฐํ ์ธ์คํด์ค์ ์ด๋ฆ
- PROJECT_ID: VM ์ธ์คํด์ค๊ฐ ์๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- ZONE: VM ์ธ์คํด์ค๊ฐ ์๋ ์์ญ
ํ์์ ๋ฐ๋ผ
Y
๋ฅผ ๋๋ฌ SSH ํค๋ฅผ ์์ฑํ ๊ฒ์ธ์ง ํ์ธํฉ๋๋ค.VM์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์ ์ด๋ฆ์ ํ์ธํฉ๋๋ค.
whoami
๋์ค์ ์ด ์ฌ์ฉ์ ์ด๋ฆ์ด ํ์ํฉ๋๋ค.
์ด์ IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ๋๋ก PuTTY ์ฑ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- PuTTY ์ฑ์ ์ด๊ณ ์นดํ ๊ณ ๋ฆฌ ์ฐ๊ฒฐ > ํ๋ก์๋ฅผ ์ ํํฉ๋๋ค.
๋ค์ ํ๋ก์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
- Proxy type(ํ๋ก์ ์ ํ)์ผ๋ก Local(๋ก์ปฌ)์ ์ ํํฉ๋๋ค.
Telnet command, or local proxy command(Telnet ๋ช ๋ น์ด ๋๋ ๋ก์ปฌ ํ๋ก์ ๋ช ๋ น์ด) ํ๋์ ๋ค์์ ์ ๋ ฅํฉ๋๋ค.
gcloud.cmd compute start-iap-tunnel %host %port --listen-on-stdin --project PROJECT_ID --zone ZONE
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: VM ์ธ์คํด์ค๊ฐ ์๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID
- ZONE: VM ์ธ์คํด์ค๊ฐ ์๋ ์์ญ
Print proxy diagnostics in the terminal window(ํฐ๋ฏธ๋ ์ฐฝ์์ ํ๋ก์ ์ง๋จ ์ธ์)์ Only until session starts(์ธ์ ์ด ์์๋ ๋๊น์ง๋ง)๋ฅผ ์ ํํฉ๋๋ค.
Connection(์ฐ๊ฒฐ) > SSH > Auth(์ธ์ฆ) ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค.
Browse(์ฐพ์๋ณด๊ธฐ)๋ฅผ ํด๋ฆญํ๊ณ ๋ค์ ํ์ผ ์ด๋ฆ์ ๋ถ์ฌ๋ฃ์ ๋ค์ Open(์ด๊ธฐ)์ ํด๋ฆญํฉ๋๋ค.
%USERPROFILE%\.ssh\google_compute_engine.ppk
Session(์ธ์ ) ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค.
๋ค์ ํ๋ก์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
Host name (or IP address)(ํธ์คํธ ์ด๋ฆ ๋๋ IP ์ฃผ์) ํ๋์ ๋ค์์ ์ ๋ ฅํฉ๋๋ค.
USERNAME@INSTANCE_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- USERNAME: ์ด์ ์ ๊ฒฐ์ ํ Linux ์ฌ์ฉ์ ์ด๋ฆ
- INSTANCE_NAME: ์ฐ๊ฒฐํ VM ์ธ์คํด์ค์ ์ด๋ฆ
Saved sessions(์ ์ฅ๋ ์ธ์ ): ์ธ์ ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
์ด๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ SSH ์ธ์ ์ ์์ํฉ๋๋ค.
ssh
gcloud
๋ฅผ ์ฌ์ฉํ๋ ProxyCommand
์ต์
๊ณผ ํจ๊ป ssh ๋ช
๋ น์ด๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ ํฐ๋์ ์์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ฌ์ฉํด์ ์ ์ฒด ssh
๋ช
๋ น์ด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
gcloud compute ssh INSTANCE_NAME --dry-run
RDP ์ฐ๊ฒฐ ํฐ๋๋ง
IAP๋ฅผ ํตํด RDP ํธ๋ํฝ์ ํฐ๋๋งํ์ฌ ์ธ๋ถ IP ์ฃผ์๊ฐ ์๋ Windows ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
IAP ๋ฐ์คํฌํฑ
IAP ๋ฐ์คํฌํฑ์ ์ฌ์ฉํ์ฌ IAP TCP ์ ๋ฌ์ ํตํด ํ๋ ์ด์์ VM ์ธ์คํด์ค์ ์๊ฒฉ ๋ฐ์คํฌํฑ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ผ > Google Cloud ํ๋ก์ ํธ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.
ํ๋ก์ ํธ์ ID ๋๋ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
ํ๋ก์ ํธ ํ์๊ธฐ ์ฐฝ์์ ์ฐ๊ฒฐํ๋ ค๋ VM ์ธ์คํด์ค๋ฅผ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋จ์ถ๋ก ํด๋ฆญํ๊ณ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
IAP ๋ฐ์คํฌํฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ํ๋ก์ ํธ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
gcloud
VM ์ธ์คํด์ค์ ์๊ฒฉ ๋ฐ์คํฌํฑ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋จผ์ ํฐ๋์ ๋ง๋ญ๋๋ค.
gcloud compute start-iap-tunnel
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ VM ์ธ์คํด์ค์ RDP ํฌํธ์ ๋ํ ์ํธํ๋ ํฐ๋์ ๋ง๋ญ๋๋ค.gcloud compute start-iap-tunnel INSTANCE_NAME 3389 \ --local-host-port=localhost:LOCAL_PORT \ --zone=ZONE
INSTANCE_NAME์ ์ฐ๊ฒฐํ๋ ค๋ VM ์ธ์คํด์ค์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. LOCAL_PORT๋ฅผ ํ๋ก์๋ฅผ ๊ฒฐํฉํ๋ ค๋ localhost ํฌํธ๋ก ๋ฐ๊พธ๊ฑฐ๋ 0์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ๋์ง ์์ ํฌํธ๋ฅผ ์๋์ผ๋ก ์ ํํฉ๋๋ค. ZONE์ VM ์ธ์คํด์ค๊ฐ ์๋ ์์ญ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
gcloud
๋ VM ์ธ์คํด์ค๋ก ์ฐ๊ฒฐ ํ ์คํธ๋ฅผ ์ํํ ํ ํฐ๋์ ์ด๊ณ ํฌํธ ๋ฒํธ๋ฅผ ํ์ํฉ๋๋ค.Listening on port [LOCAL_PORT].
localhost:LOCAL_PORT๋ก ์ ์ก๋ ๋ชจ๋ ํธ๋ํฝ์ VM ์ธ์คํด์ค๋ก ์ ๋ฌ๋ฉ๋๋ค. ํฌํธ๋ ๋ก์ปฌ ์ปดํจํฐ์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
gcloud
๋ฅผ ์คํ ์ค์ธ ์ํ๋ก ๋๊ณ Microsoft Windows ์๊ฒฉ ๋ฐ์คํฌํฑ ์ฐ๊ฒฐ ์ฑ์ ์ฝ๋๋ค.์ปดํจํฐ ์ด๋ฆ์ผ๋ก ํฐ๋ ์๋ํฌ์ธํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
localhost:LOCAL_PORT
LOCAL_PORT๋ฅผ ํฐ๋์ด
gcloud
๋ก ์ด๋ ธ์ ๋ ํ์๋ ํฌํธ ๋ฒํธ๋ก ๋ฐ๊ฟ๋๋ค.์ฐ๊ฒฐ์ ํด๋ฆญํฉ๋๋ค.
๋ค๋ฅธ TCP ์ฐ๊ฒฐ ํฐ๋๋ง
gcloud compute start-iap-tunnel
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํฌํธ๋ฅผ ํ ๋นํ์ฌ ๋ค๋ฅธ TCP ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ IAP TCP ์ ๋ฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ก์ปฌ ํฌํธ๋ HTTPS ์คํธ๋ฆผ์์ ๋ก์ปฌ ๋จธ์ ์ผ๋ก๋ถํฐ ์๊ฒฉ ๋จธ์ ์ผ๋ก์ ๋ฐ์ดํฐ ํธ๋ํฝ์ ํฐ๋๋งํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ IAP๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๊ณ ๋ํ ํด์ ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฒฉ ํฌํธ๋ก ์ ๋ฌํฉ๋๋ค. ๋ฐ๋๋ก ์๊ฒฉ ํฌํธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ํ๋์ด ๋ก์ปฌ ํฌํธ๋ก ์ ์ก๋๊ณ ์ดํ ๋ํ ํด์ ๋ฉ๋๋ค.
gcloud
VM ์ธ์คํด์ค์ ํฌํธ์ ์ํธํ๋ ํฐ๋์ ๋ง๋ญ๋๋ค.
gcloud compute start-iap-tunnel INSTANCE_NAME INSTANCE_PORT \ --local-host-port=localhost:LOCAL_PORT \ --zone=ZONE
INSTANCE_NAME ๋ฐ INSTANCE_PORT๋ฅผ ์ฐ๊ฒฐํ VM ์ธ์คํด์ค์ ์ด๋ฆ๊ณผ ํฌํธ๋ก ๋ฐ๊ฟ๋๋ค. LOCAL_PORT๋ฅผ ํ๋ก์๋ฅผ ๊ฒฐํฉํ๋ ค๋ localhost ํฌํธ๋ก ๋ฐ๊ฟ๋๋ค. ZONE์ VM ์ธ์คํด์ค๊ฐ ์๋ ์์ญ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
gcloud
๋ VM ์ธ์คํด์ค๋ก ์ฐ๊ฒฐ ํ
์คํธ๋ฅผ ์ํํ ํ ํฐ๋์ ์ด๊ณ ํฌํธ ๋ฒํธ๋ฅผ ํ์ํฉ๋๋ค.
Listening on port [LOCAL_PORT].
localhost:LOCAL_PORT๋ก ์ ์ก๋ ๋ชจ๋ ํธ๋ํฝ์ VM ์ธ์คํด์ค๋ก ์ ๋ฌ๋ฉ๋๋ค. ํฌํธ๋ ๋ก์ปฌ ์ปดํจํฐ์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
IAP TCP ์ ๋ก๋ ๋์ญํญ ์ฆ๊ฐ
IAP TCP ์ ๋ก๋ ๋์ญํญ์ ๋๋ฆฌ๋ ค๋ฉด gcloud CLI๊ฐ ์ค์น๋ ๋์ผํ ๋จธ์ ์ NumPy๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Linux
Unix ํ๋ซํผ์์ pip๋ฅผ ์ฌ์ฉํ์ฌ NumPy๋ฅผ ์ค์นํ๋ ค๋ฉด ์ ํฐ๋ฏธ๋ ์ธ์คํด์ค์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$(gcloud info --format="value(basic.python_location)") -m pip install numpy
NumPy๋ฅผ ์ค์นํ ํ์๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ง์๋๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์. ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ gcloud๊ฐ ์ธ๋ถ ํจํค์ง์ ์ก์ธ์คํ๋๋ก ํ์ฉํฉ๋๋ค.
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Windows
Windows ํ๋ซํผ์์ pip๋ฅผ ์ฌ์ฉํ์ฌ NumPy๋ฅผ ์ค์นํ๋ ค๋ฉด ์ PowerShell ์ธ์คํด์ค์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
start (gcloud info --format="value(basic.python_location)") "-m pip install numpy"
NumPy๋ฅผ ์ค์นํ ํ์๋ ๋ฉ์์ง๊ฐ ๊ณ์ ํ์๋๋ค๋ฉด ๋ค๋ฅธ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํด์ gcloud๊ฐ ์ธ๋ถ ํจํค์ง์ ์ก์ธ์คํ๋๋ก ํ์ฉํฉ๋๋ค.
$env:CLOUDSDK_PYTHON_SITEPACKAGES="1"
์๋ ค์ง ์ ํ์ฌํญ
๋์ญํญ: IAP์ TCP ์ ๋ฌ ๊ธฐ๋ฅ์ ๋๋์ ๋ฐ์ดํฐ ์ ์ก์ ์ํ ๊ฒ์ด ์๋๋๋ค. IAP๋ ์ฌ์ฉ์์ ์ด ์๋น์ค ๋จ์ฉ ๋ฐฉ์ง๋ฅผ ์ํด ์ฉ๋์ ์ ํํ ์ ์๋ ๊ถ๋ฆฌ๊ฐ ์์ต๋๋ค.
์ฐ๊ฒฐ ๊ธธ์ด: 1์๊ฐ ๋์ ํ๋์ด ์์ผ๋ฉด IAP๊ฐ ์ธ์
์ฐ๊ฒฐ์ ์๋์ผ๋ก ๋์ต๋๋ค. ํ์ฌ gcloud compute start-iap-tunnel
์์๋ ํฐ๋ ์ฐ๊ฒฐ์ด ํด์ ๋๋ฉด ํฐ๋์ ๋ค์ ์ค์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- ์ก์ธ์ค ์์ค์ ์ ์ฉํ์ฌ ๋์ฑ ๋ค์ํ ์ปจํ ์คํธ ๊ท์น ์ค์ ํ๊ธฐ
- Cloud ๊ฐ์ฌ ๋ก๊ทธ ์ฌ์ฉ ์ค์ ์ ์ก์ธ์ค ์์ฒญ์ ์ฐธ์กฐํ๊ธฐ
- IAP ์์ธํ ์์๋ณด๊ธฐ