Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена AGWA с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы с помощью чистого Terraform подготовите инфраструктуру со стороны GCP, которую должен понимать каждый администратор Google Workspace — с включенным API Cloud Identity, группой IAM, созданной на уровне проекта, группой, привязанной к роли зрителя, и приемником Cloud Audit Logs, направляющим события аудита уровня организации в выделенный бакет логирования. Четыре блока; граница Cloud Identity + Audit Logs, проверяемая на экзамене AGWA.
Поместите фрагменты кода в один файл main.tf, выполните terraform init, затем terraform apply пошагово.
Примечание: большая часть содержимого экзамена AGWA находится в консоли администратора Workspace (маршрутизация Gmail, политики совместного использования Drive, управление мобильными устройствами, контекстно-зависимый доступ), что не поддается прямому Terraform-управлению через провайдер google. Провайдер googleworkspace существует, но требует учетной записи службы суперадминистратора Workspace с делегированием на уровне домена — что выходит за рамки этой лабораторной работы.
>= 1.5 или OpenTofu >= 1.6.your-project-id и your-org-id в приведенных ниже фрагментах.Все бесплатно в рамках лабораторной работы:
Сам продукт Workspace тарифицируется за место (~$6/пользователь/месяц для Business Starter, до ~$30/пользователь/месяц для Enterprise) — это выходит за рамки лабораторной работы. Инфраструктура ниже бесплатна.
Включите API Cloud Identity, IAM и Cloud Logging.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-agwa"
managed_by = "terraform"
}
}
resource "google_project_service" "cloudidentity" {
service = "cloudidentity.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "logging" {
service = "logging.googleapis.com"
disable_on_destroy = false
}Группы Cloud Identity — это зеркальное отображение групп Google Workspace со стороны GCP — они находятся в том же каталоге идентификации и адресуются в том же формате group-email@your-domain.com. Экзамен AGWA проверяет эту модель идентификации "единого окна": пользователь, созданный в Workspace, является той же сущностью, которая получает привязки IAM в GCP.
Мы создаем группу безопасности dev-readers@your-domain.com. Замените your-org-id на ваш идентификатор клиента Cloud Identity (его можно найти с помощью gcloud organizations list → поле directoryCustomerId).
Для этого ресурса требуется владение доменом — он завершится неудачей, если вы не контролируете your-domain.com и не включили Cloud Identity API на уровне организации. Для быстрой лабораторной работы без реального домена пропустите этот шаг и используйте существующую IAM-идентичность на Шаге 3.
resource "google_cloud_identity_group" "dev_readers" {
display_name = "dev-readers"
description = "Lab Cloud Identity group for the AGWA walkthrough"
parent = "customers/your-org-id" # REPLACE — find via `gcloud organizations list`
group_key {
id = "dev-readers@your-domain.com" # REPLACE with your Workspace domain
}
labels = {
"cloudidentity.googleapis.com/groups.discussion_forum" = ""
}
initial_group_config = "WITH_INITIAL_OWNER"
depends_on = [google_project_service.cloudidentity]
}Администраторы Workspace регулярно назначают разрешения GCP группам Workspace — рекомендованный AGWA шаблон: предоставлять роли группам, управлять членством в Workspace. Мы привязываем группу dev-readers из Шага 2 к roles/viewer в текущем проекте. Любой, кого администратор Workspace добавит в dev-readers@your-domain.com, мгновенно наследует роль Viewer в этом проекте GCP. Любой удаленный теряет ее.
Обратите внимание на префикс group: в поле IAM member — это канонический синтаксис для привязки групповой идентичности. Другие префиксы, проверяемые на экзамене AGWA: user: (индивидуальный), serviceAccount: (учетная запись службы), domain: (все пользователи в домене).
data "google_project" "current" {}
resource "google_project_iam_member" "dev_readers_viewer" {
project = data.google_project.current.project_id
role = "roles/viewer"
member = "group:${google_cloud_identity_group.dev_readers.group_key[0].id}"
}Экзамен AGWA проверяет область Cloud Audit Logs: журналы Admin Activity всегда включены и бесплатны; журналы Data Access по умолчанию отключены и тарифицируются обычным образом; журналы System Event всегда включены и бесплатны; журналы Policy Denied (отклонения VPC-SC) всегда включены и бесплатны.
Мы создаем выделенный бакет логирования (отдельный от бакетов по умолчанию _Required и _Default) с именем audit-events, затем приемник журналов, перенаправляющий в него все журналы аудита, связанные с IAM. Это дает командам по соблюдению нормативных требований отдельное окно хранения от операционных журналов в _Default — шаблон, рекомендованный AGWA для хранения журналов аудита, чтобы они пережили реагирование на инциденты.
resource "google_logging_project_bucket_config" "audit" {
project = data.google_project.current.project_id
location = "global"
retention_days = 400 # 13 months — typical compliance ask
bucket_id = "audit-events"
depends_on = [google_project_service.logging]
}
resource "google_logging_project_sink" "audit_sink" {
name = "certlabpro-agwa-audit-sink"
destination = "logging.googleapis.com/${google_logging_project_bucket_config.audit.id}"
filter = "logName:\"cloudaudit.googleapis.com\" AND protoPayload.serviceName=\"iam.googleapis.com\""
unique_writer_identity = true
}terraform destroy удаляет все. Группа Cloud Identity уничтожается (удаляется только из Cloud Identity; если это была настоящая группа Workspace, восстановите из консоли администратора в течение 25 дней). Привязка IAM отменяется; члены группы немедленно теряют роль Viewer. Бакет логирования + приемник удаляются без остатка; 400-дневный срок хранения имеет значение только пока журналы поступают туда.
AGWA охватывает административные интерфейсы Workspace, которые не поддаются прямому Terraform-управлению через провайдер google — правила маршрутизации Gmail / спам-фильтры / DMARC / DKIM / SPF, настройки совместного использования Drive / общие диски / метки, политики записи Meet, предоставление переговорных комнат в Календаре, управление мобильными устройствами (расширенное + базовое), политики браузера Chrome, политики Context-Aware Access (которые ИМЕЮТ интерфейс TF через google_access_context_manager_*, но находятся на уровне организации и требуют Cloud Identity Premium), правила хранения Vault, экспорты eDiscovery и более широкое дерево настроек консоли администратора Workspace.
Провайдер Terraform googleworkspace существует для пользователей / групп / организационных единиц / доменов / назначений ролей внутри самого Workspace, но требует учетной записи службы с делегированием на уровне домена и subject суперадминистратора — что выходит за рамки быстрой лабораторной работы.
Мы придерживаемся примитивов Cloud Identity Groups + IAM + Audit Logs, потому что они являются задокументированной границей между Workspace и GCP — частью, которой должен владеть каждый администратор Workspace. Для внутренних административных шаблонов Workspace (Gmail / Drive / Meet / mobile / Chrome) разделы Справочник + Editorial охватывают концептуальную поверхность.