Ответ
IAM (Identity and Access Management) — это фреймворк политик и технологий для управления цифровыми идентичностями и контроля доступа к ресурсам. Основная цель IAM — реализовать принцип наименьших привилегий, предоставляя пользователям и сервисам только те права, которые необходимы для выполнения их задач.
Ключевые компоненты IAM:
- Identity (Идентичность): Сущность, которая может быть аутентифицирована.
Пользователи (Users)
: Люди или сервисные аккаунты.Группы (Groups)
: Коллекции пользователей для упрощения управления правами.
- Authentication (Аутентификация): Процесс проверки, является ли сущность той, за кого себя выдает (например, по логину/паролю, MFA, API-ключам).
- Authorization (Авторизация): Процесс предоставления или отказа в доступе к ресурсам на основе политик.
Роли (Roles)
: Набор разрешений, который может быть временно "принят" пользователем или сервисом. Это более безопасный способ предоставления прав, чем использование долгоживущих ключей.Политики (Policies)
: Документы (часто в формате JSON), которые явно определяют, какие действия (Action
) разрешены (Allow
) или запрещены (Deny
) для каких ресурсов (Resource
).
IAM является фундаментальной частью безопасности в облачных платформах (AWS IAM, Google Cloud IAM, Azure AD) и в крупных корпоративных системах (например, Kubernetes через RBAC).
Пример использования AWS SDK для Go (получение списка пользователей):
package main
import (
"fmt"
"log"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/iam"
)
func main() {
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
svc := iam.New(sess)
result, err := svc.ListUsers(&iam.ListUsersInput{})
if err != nil {
log.Fatalf("Не удалось получить список пользователей: %v", err)
}
fmt.Println("Пользователи IAM:")
for _, user := range result.Users {
fmt.Println(" *", *user.UserName)
}
}