Демистифицируем разрешения Terraform Cloud: подробное руководство

Terraform Cloud — это мощный инструмент «инфраструктура как код» (IaC), который позволяет организациям управлять своей инфраструктурой с помощью файлов декларативной конфигурации. Одним из ключевых аспектов Terraform Cloud является надежная система разрешений, которая обеспечивает детальный контроль над доступом пользователей и действиями на платформе. В этой статье мы рассмотрим различные разрешения, доступные в Terraform Cloud, и предоставим примеры кода, иллюстрирующие их использование.

Понимание разрешений Terraform Cloud:

  1. Разрешения на уровне организации:
    • Администратор организации: имеет полный контроль над всеми ресурсами и настройками внутри организации.
    • Член организации: может получать доступ к ресурсам внутри организации и управлять ими, но не имеет административных привилегий.

Пример:

# Organization-level permissions example
resource "tfe_organization" "example" {
  name = "my-organization"
}
resource "tfe_organization_membership" "admin" {
  organization = tfe_organization.example.id
  username     = "admin@example.com"
  role         = "admin"
}
resource "tfe_organization_membership" "member" {
  organization = tfe_organization.example.id
  username     = "user@example.com"
  role         = "member"
}
  1. Разрешения на уровне рабочей области:
    • Администратор рабочей области: имеет полный контроль над определенной рабочей областью, включая управление переменными и разрешениями.
    • Разработчик рабочей области: может управлять ресурсами в рабочей области, но не может изменять настройки рабочей области или управлять разрешениями.
    • Просмотр рабочего пространства: может просматривать состояние и конфигурацию рабочего пространства, но не может вносить какие-либо изменения.

Пример:

# Workspace-level permissions example
resource "tfe_workspace" "example" {
  name         = "my-workspace"
  organization = tfe_organization.example.id
}
resource "tfe_workspace_permission" "admin" {
  workspace    = tfe_workspace.example.id
  team         = tfe_team.example.id
  access_level = "admin"
}
resource "tfe_workspace_permission" "developer" {
  workspace    = tfe_workspace.example.id
  user         = tfe_user.example.id
  access_level = "developer"
}
resource "tfe_workspace_permission" "viewer" {
  workspace    = tfe_workspace.example.id
  user         = tfe_user.example.id
  access_level = "viewer"
}
  1. Разрешения на уровне переменных:
    • Администратор переменных: может создавать, обновлять и удалять переменные в рабочей области.
    • Оператор переменных: может читать и использовать переменные в рабочей области, но не может их изменять.
    • Просмотр переменных: можно просматривать значения переменных только в рабочей области.

Пример:

# Variable-level permissions example
resource "tfe_variable" "example" {
  key          = "my-variable"
  value        = "secret"
  workspace    = tfe_workspace.example.id
}
resource "tfe_variable_access" "admin" {
  variable     = tfe_variable.example.id
  team         = tfe_team.example.id
  access_level = "admin"
}
resource "tfe_variable_access" "operator" {
  variable     = tfe_variable.example.id
  user         = tfe_user.example.id
  access_level = "operator"
}
resource "tfe_variable_access" "viewer" {
  variable     = tfe_variable.example.id
  user         = tfe_user.example.id
  access_level = "viewer"
}

Terraform Cloud предлагает полный набор разрешений для контроля доступа и действий на платформе. Используя разрешения на уровне организации, рабочей области и переменного уровня, организации могут обеспечить надлежащую безопасность и сотрудничество в процессах управления своей инфраструктурой. Понимание и эффективное использование этих разрешений имеет решающее значение для успешного внедрения Terraform Cloud в среде DevOps.