서비스 계정의 IAM 정책을 JSON 형식으로 작성하는 방법은?
_____A1: 서비스 계정의 IAM 정책은 특정 서비스 계정에 부여된 권한과 역할을 정의하는 JSON 형식의 문서입니다. 이를 통해 서비스 계정이 GCP 리소스에 어떤 액세스 권한을 가지는지 관리할 수 있습니다.
Q2: IAM 정책 JSON의 기본 구조는 어떻게 되나요?
A2: IAM 정책은 다음과 같은 기본 구조를 가집니다.
```json
{
"bindings": [
{
"role": "roles/ROLE_NAME",
"members": [
"serviceAccount:SERVICE_ACCOUNT_EMAIL"
]
}
],
"etag": "EtagValue",
"version": 1
}
```
- `bindings`: 권한 부여의 핵심 배열로, 각 항목은 한 역할과 그 역할에 속한 멤버 리스트를 포함합니다.
- `role`: 부여할 IAM 역할(예: `roles/storage.objectViewer`)
- `members`: 역할을 부여받는 대상(예: `serviceAccount:[email protected]`)
- `etag`: 정책의 현재 버전 확인용 동기화 문자열(옵션)
- `version`: IAM 정책 버전(기본은 1, 조건문 등 고급 기능 시 3 사용)
Q3: 서비스 계정을 명시하는 멤버 형식은 어떻게 작성하나요?
A3: 서비스 계정을 멤버로 지정할 때는 `"serviceAccount:서비스계정이메일"` 형식을 사용합니다. 예를 들어:
```json
"members": [
"serviceAccount:[email protected]"
]
```
Q4: IAM 정책에 여러 역할을 주고 싶으면 어떻게 하나요?
A4: `bindings` 배열에 여러 객체를 추가하면 됩니다. 예:
```json
{
"bindings": [
{
"role": "roles/storage.objectViewer",
"members": [
"serviceAccount:[email protected]"
]
},
{
"role": "roles/logging.logWriter",
"members": [
"serviceAccount:[email protected]"
}
],
"etag": "BwWWja0YfJA=",
"version": 1
}
```
Q5: IAM 정책을 어떻게 만들고 적용하나요?
A5:
1. JSON 파일로 IAM 정책을 작성합니다.
2. `gcloud` 명령어를 사용해 해당 서비스 계정이나 프로젝트에 정책을 적용합니다. 예:
```bash
gcloud projects set-iam-policy PROJECT_ID policy.json
```
또는 서비스 계정 단위로:
```bash
gcloud iam service-accounts set-iam-policy SERVICE_ACCOUNT_EMAIL policy.json
```
Q6: `etag`와 `version` 필드의 역할은 무엇인가요?
A6:
- `etag`: IAM 정책 변경 시 충돌 방지 및 동기화를 위해 사용합니다. 정책을 업데이트할 때는 기존 `etag` 값을 포함하는 것이 권장됩니다.
- `version`: 정책 문서의 버전으로, 조건문(조건부 바인딩) 등의 사용 유무에 따라 1~3까지 설정합니다. 일반적인 정책은 `version: 1`로 충분합니다.
Q7: 조건부 역할 바인딩을 JSON에 넣으려면 어떻게 작성하나요?
A7: 조건을 추가하려면 각 바인딩에 `"condition"` 필드를 추가합니다. 예:
```json
{
"bindings": [
{
"role": "roles/storage.objectViewer",
"members": ["serviceAccount:[email protected]"],
"condition": {
"title": "restrictAccess",
"description": "Grant access only during business hours",
"expression": "request.time.getHours() >= 9 && request.time.getHours() <= 17"
}
}
],
"etag": "BwWWja0YfJA=",
"version": 3
}
```
이 경우 `version`을 3으로 설정해야 합니다.
---
요약하자면, 서비스 계정의 IAM 정책은 JSON 형식으로 `"bindings"` 배열 내에 `"role"`과 `"members"`를 지정하며, 멤버는 `"serviceAccount:서비스계정이메일"` 형식을 사용합니다. `etag`와 `version`을 적절히 포함하여 정책을 정의한 후, `gcloud` 명령어 또는 API를 통해 적용하면 됩니다.
IAM 정책은 사용자, 그룹, 서비스 계정이 GCP 리소스에 대해 수행할 수 있는 작업을 제어합니다.
아래에서는 서비스 계정의 IAM 정책을 JSON 형식으로 작성하는 방법에 대해 자세히 설명하겠습니다.
1. IAM 정책의 기본 구조 IAM 정책은 다음과 같은 기본 구조를 가집니다: ```json { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" ] } ], "etag": "etag_value" } ``` - bindings : 역할과 멤버의 쌍을 정의하는 배열입니다.
- role : 부여할 역할의 이름입니다.
예를 들어, `roles/viewer`, `roles/editor`, `roles/owner` 등이 있습니다.
- members : 역할을 부여받는 주체의 목록입니다.
서비스 계정의 경우 `serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL` 형식으로 작성합니다.
- etag : 정책의 버전을 나타내는 값으로, 업데이트 시 충돌을 방지하는 데 사용됩니다.
2. 서비스 계정의 IAM 정책 작성 예시 다음은 특정 서비스 계정에 대해 GCP의 Cloud Storage에 대한 읽기 권한을 부여하는 IAM 정책의 예입니다.
```json { "bindings": [ { "role": "roles/storage.objectViewer", "members": [ "serviceAccount:[email protected]" ] } ], "etag": "BwWj8g==" } ``` 이 예제에서: - `roles/storage.objectViewer`는 Cloud Storage의 객체를 읽을 수 있는 권한을 부여합니다.
- `[email protected]`은 권한을 부여받는 서비스 계정의 이메일 주소입니다.
3. 여러 역할과 멤버 추가하기 IAM 정책은 여러 역할과 멤버를 포함할 수 있습니다.
다음은 두 개의 역할을 가진 서비스 계정의 예입니다.
```json { "bindings": [ { "role": "roles/storage.objectViewer", "members": [ "serviceAccount:[email protected]" ] }, { "role": "roles/storage.objectAdmin", "members": [ "serviceAccount:[email protected]" ] } ], "etag": "BwWj8g==" } ``` 이 예제에서는 동일한 서비스 계정에 대해 객체 보기 권한과 객체 관리 권한을 모두 부여하고 있습니다.
4. 정책 적용하기 IAM 정책을 작성한 후, 이를 GCP 리소스에 적용하려면 `gcloud` 명령줄 도구를 사용할 수 있습니다.
예를 들어, Cloud Storage 버킷에 정책을 적용하려면 다음과 같은 명령을 사용할 수 있습니다.
```bash gsutil iam set policy.json gs://YOUR_BUCKET_NAME ``` 여기서 `policy.json`은 작성한 IAM 정책이 저장된 파일의 이름입니다.
5. 정책 검토 및 수정 IAM 정책을 작성한 후, 항상 정책이 올바르게 적용되었는지 검토하는 것이 중요합니다.
GCP 콘솔에서 IAM & Admin 섹션으로 이동하여 서비스 계정의 권한을 확인할 수 있습니다.
필요에 따라 정책을 수정하거나 추가할 수 있습니다.
결론 서비스 계정의 IAM 정책을 JSON 형식으로 작성하는 것은 GCP에서 리소스에 대한 접근 권한을 관리하는 중요한 방법입니다.
위의 예시와 설명을 참고하여 필요한 권한을 적절히 설정하고, 보안 모범 사례를 준수하는 것이 중요합니다.
IAM 정책을 잘 관리하면 클라우드 환경의 보안을 강화하고, 리소스에 대한 접근을 효과적으로 제어할 수 있습니다.
작성자:
이준호 [비회원]
| 작성일자: 1년 전
2024-12-18 16:51:42
조회수: 205 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 205 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.