iam

package
v0.0.1-alpha.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package iam provides emulation of AWS Identity and Access Management (IAM).

Uses the AWS Query protocol (form-encoded POST body, XML responses). Supported operations:

  • CreateUser, GetUser, ListUsers, DeleteUser
  • CreateAccessKey, DeleteAccessKey
  • PutUserPolicy, GetUserPolicy, DeleteUserPolicy
  • CreateRole, GetRole, ListRoles, DeleteRole
  • AttachRolePolicy, DetachRolePolicy, ListAttachedRolePolicies
  • CreateInstanceProfile, DeleteInstanceProfile, GetInstanceProfile
  • AddRoleToInstanceProfile, RemoveRoleFromInstanceProfile
  • CreatePolicy, GetPolicy, ListPolicies, DeletePolicy
  • CreateGroup, DeleteGroup, AddUserToGroup, RemoveUserFromGroup, ListGroupsForUser

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessKey

type AccessKey struct {
	AccessKeyId     string `json:"AccessKeyId"`
	SecretAccessKey string `json:"SecretAccessKey"`
	Status          string `json:"Status"`
	UserName        string `json:"UserName"`
	CreateDate      string `json:"CreateDate"`
}

AccessKey represents an IAM access key.

type AttachedPolicy

type AttachedPolicy struct {
	PolicyArn  string `json:"PolicyArn"`
	PolicyName string `json:"PolicyName"`
}

AttachedPolicy is a managed policy attached to a role.

type Group

type Group struct {
	GroupName        string            `json:"GroupName"`
	GroupId          string            `json:"GroupId"`
	Arn              string            `json:"Arn"`
	Path             string            `json:"Path"`
	CreateDate       string            `json:"CreateDate"`
	Members          []string          `json:"Members,omitempty"`
	AttachedPolicies []AttachedPolicy  `json:"AttachedPolicies,omitempty"`
	InlinePolicies   map[string]string `json:"InlinePolicies,omitempty"`
}

Group represents an IAM group.

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler holds IAM handler dependencies.

func (*Handler) AddRoleToInstanceProfile

func (h *Handler) AddRoleToInstanceProfile(w http.ResponseWriter, r *http.Request)

AddRoleToInstanceProfile adds a role to an instance profile.

func (*Handler) AddUserToGroup

func (h *Handler) AddUserToGroup(w http.ResponseWriter, r *http.Request)

AddUserToGroup adds a user to a group.

func (*Handler) AttachGroupPolicy

func (h *Handler) AttachGroupPolicy(w http.ResponseWriter, r *http.Request)

AttachGroupPolicy attaches a managed policy to a group.

func (*Handler) AttachRolePolicy

func (h *Handler) AttachRolePolicy(w http.ResponseWriter, r *http.Request)

AttachRolePolicy attaches a managed policy to a role.

func (*Handler) AttachUserPolicy

func (h *Handler) AttachUserPolicy(w http.ResponseWriter, r *http.Request)

AttachUserPolicy attaches a managed policy to a user.

func (*Handler) CreateAccessKey

func (h *Handler) CreateAccessKey(w http.ResponseWriter, r *http.Request)

CreateAccessKey creates an access key for a user.

func (*Handler) CreateGroup

func (h *Handler) CreateGroup(w http.ResponseWriter, r *http.Request)

CreateGroup creates an IAM group.

func (*Handler) CreateInstanceProfile

func (h *Handler) CreateInstanceProfile(w http.ResponseWriter, r *http.Request)

CreateInstanceProfile creates an instance profile.

func (*Handler) CreatePolicy

func (h *Handler) CreatePolicy(w http.ResponseWriter, r *http.Request)

CreatePolicy creates a managed IAM policy.

func (*Handler) CreateRole

func (h *Handler) CreateRole(w http.ResponseWriter, r *http.Request)

CreateRole creates an IAM role.

func (*Handler) CreateServiceLinkedRole

func (h *Handler) CreateServiceLinkedRole(w http.ResponseWriter, r *http.Request)

CreateServiceLinkedRole creates a service-linked role.

func (*Handler) CreateUser

func (h *Handler) CreateUser(w http.ResponseWriter, r *http.Request)

CreateUser creates an IAM user.

func (*Handler) DeleteAccessKey

func (h *Handler) DeleteAccessKey(w http.ResponseWriter, r *http.Request)

DeleteAccessKey deletes an access key.

func (*Handler) DeleteGroup

func (h *Handler) DeleteGroup(w http.ResponseWriter, r *http.Request)

DeleteGroup deletes an IAM group.

func (*Handler) DeleteGroupPolicy

func (h *Handler) DeleteGroupPolicy(w http.ResponseWriter, r *http.Request)

DeleteGroupPolicy removes an inline policy from a group.

func (*Handler) DeleteInstanceProfile

func (h *Handler) DeleteInstanceProfile(w http.ResponseWriter, r *http.Request)

DeleteInstanceProfile deletes an instance profile.

func (*Handler) DeletePolicy

func (h *Handler) DeletePolicy(w http.ResponseWriter, r *http.Request)

DeletePolicy deletes a managed IAM policy.

func (*Handler) DeleteRole

func (h *Handler) DeleteRole(w http.ResponseWriter, r *http.Request)

DeleteRole deletes an IAM role.

func (*Handler) DeleteRolePolicy

func (h *Handler) DeleteRolePolicy(w http.ResponseWriter, r *http.Request)

DeleteRolePolicy removes an inline policy from a role.

func (*Handler) DeleteUser

func (h *Handler) DeleteUser(w http.ResponseWriter, r *http.Request)

DeleteUser deletes an IAM user.

func (*Handler) DeleteUserPolicy

func (h *Handler) DeleteUserPolicy(w http.ResponseWriter, r *http.Request)

DeleteUserPolicy removes an inline policy from a user.

func (*Handler) DetachGroupPolicy

func (h *Handler) DetachGroupPolicy(w http.ResponseWriter, r *http.Request)

DetachGroupPolicy detaches a managed policy from a group.

func (*Handler) DetachRolePolicy

func (h *Handler) DetachRolePolicy(w http.ResponseWriter, r *http.Request)

DetachRolePolicy detaches a managed policy from a role.

func (*Handler) DetachUserPolicy

func (h *Handler) DetachUserPolicy(w http.ResponseWriter, r *http.Request)

DetachUserPolicy detaches a managed policy from a user.

func (*Handler) GetAccountAuthorizationDetails

func (h *Handler) GetAccountAuthorizationDetails(w http.ResponseWriter, r *http.Request)

GetAccountAuthorizationDetails returns all IAM entities (users, groups, roles, managed policies) and their attached policies in one response.

func (*Handler) GetGroup

func (h *Handler) GetGroup(w http.ResponseWriter, r *http.Request)

GetGroup retrieves an IAM group and its members.

func (*Handler) GetGroupPolicy

func (h *Handler) GetGroupPolicy(w http.ResponseWriter, r *http.Request)

GetGroupPolicy retrieves an inline policy from a group.

func (*Handler) GetInstanceProfile

func (h *Handler) GetInstanceProfile(w http.ResponseWriter, r *http.Request)

GetInstanceProfile retrieves an instance profile.

func (*Handler) GetPolicy

func (h *Handler) GetPolicy(w http.ResponseWriter, r *http.Request)

GetPolicy retrieves a managed IAM policy.

func (*Handler) GetRole

func (h *Handler) GetRole(w http.ResponseWriter, r *http.Request)

GetRole retrieves an IAM role.

func (*Handler) GetRolePolicy

func (h *Handler) GetRolePolicy(w http.ResponseWriter, r *http.Request)

GetRolePolicy retrieves an inline policy from a role.

func (*Handler) GetUser

func (h *Handler) GetUser(w http.ResponseWriter, r *http.Request)

GetUser retrieves an IAM user.

func (*Handler) GetUserPolicy

func (h *Handler) GetUserPolicy(w http.ResponseWriter, r *http.Request)

GetUserPolicy retrieves an inline policy from a user.

func (*Handler) ListAccessKeys

func (h *Handler) ListAccessKeys(w http.ResponseWriter, r *http.Request)

ListAccessKeys lists access keys for an IAM user. AWS docs: https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html

func (*Handler) ListAttachedGroupPolicies

func (h *Handler) ListAttachedGroupPolicies(w http.ResponseWriter, r *http.Request)

ListAttachedGroupPolicies lists managed policies attached to a group.

func (*Handler) ListAttachedRolePolicies

func (h *Handler) ListAttachedRolePolicies(w http.ResponseWriter, r *http.Request)

ListAttachedRolePolicies lists policies attached to a role.

func (*Handler) ListAttachedUserPolicies

func (h *Handler) ListAttachedUserPolicies(w http.ResponseWriter, r *http.Request)

ListAttachedUserPolicies lists managed policies attached to a user.

func (*Handler) ListGroupPolicies

func (h *Handler) ListGroupPolicies(w http.ResponseWriter, r *http.Request)

ListGroupPolicies lists inline policy names for a group.

func (*Handler) ListGroups

func (h *Handler) ListGroups(w http.ResponseWriter, r *http.Request)

ListGroups returns all groups in the account.

func (*Handler) ListGroupsForUser

func (h *Handler) ListGroupsForUser(w http.ResponseWriter, r *http.Request)

ListGroupsForUser lists the groups a user belongs to.

func (*Handler) ListInstanceProfiles

func (h *Handler) ListInstanceProfiles(w http.ResponseWriter, r *http.Request)

ListInstanceProfiles returns all instance profiles in the account.

func (*Handler) ListInstanceProfilesForRole

func (h *Handler) ListInstanceProfilesForRole(w http.ResponseWriter, r *http.Request)

ListInstanceProfilesForRole lists instance profiles that contain a given role.

func (*Handler) ListPolicies

func (h *Handler) ListPolicies(w http.ResponseWriter, r *http.Request)

ListPolicies lists managed IAM policies.

func (*Handler) ListRolePolicies

func (h *Handler) ListRolePolicies(w http.ResponseWriter, r *http.Request)

ListRolePolicies lists inline policy names for a role.

func (*Handler) ListRoleTags

func (h *Handler) ListRoleTags(w http.ResponseWriter, r *http.Request)

ListRoleTags lists all tags on a role.

func (*Handler) ListRoles

func (h *Handler) ListRoles(w http.ResponseWriter, r *http.Request)

ListRoles lists all IAM roles.

func (*Handler) ListUserPolicies

func (h *Handler) ListUserPolicies(w http.ResponseWriter, r *http.Request)

ListUserPolicies lists inline policy names for a user.

func (*Handler) ListUserTags

func (h *Handler) ListUserTags(w http.ResponseWriter, r *http.Request)

ListUserTags lists all tags on a user.

func (*Handler) ListUsers

func (h *Handler) ListUsers(w http.ResponseWriter, r *http.Request)

ListUsers lists all IAM users.

func (*Handler) PutGroupPolicy

func (h *Handler) PutGroupPolicy(w http.ResponseWriter, r *http.Request)

PutGroupPolicy attaches an inline policy to a group.

func (*Handler) PutRolePolicy

func (h *Handler) PutRolePolicy(w http.ResponseWriter, r *http.Request)

PutRolePolicy attaches an inline policy to a role.

func (*Handler) PutUserPolicy

func (h *Handler) PutUserPolicy(w http.ResponseWriter, r *http.Request)

PutUserPolicy attaches an inline policy to a user.

func (*Handler) RemoveRoleFromInstanceProfile

func (h *Handler) RemoveRoleFromInstanceProfile(w http.ResponseWriter, r *http.Request)

RemoveRoleFromInstanceProfile removes a role from an instance profile.

func (*Handler) RemoveUserFromGroup

func (h *Handler) RemoveUserFromGroup(w http.ResponseWriter, r *http.Request)

RemoveUserFromGroup removes a user from a group.

func (*Handler) SimulatePrincipalPolicy

func (h *Handler) SimulatePrincipalPolicy(w http.ResponseWriter, r *http.Request)

SimulatePrincipalPolicy simulates whether a principal can perform a set of actions. Since Overcast does not enforce IAM policies, every action is returned as "allowed".

func (*Handler) TagRole

func (h *Handler) TagRole(w http.ResponseWriter, r *http.Request)

TagRole adds or overwrites tags on a role.

func (*Handler) TagUser

func (h *Handler) TagUser(w http.ResponseWriter, r *http.Request)

TagUser adds or overwrites tags on a user.

func (*Handler) UntagRole

func (h *Handler) UntagRole(w http.ResponseWriter, r *http.Request)

UntagRole removes tags from a role.

func (*Handler) UntagUser

func (h *Handler) UntagUser(w http.ResponseWriter, r *http.Request)

UntagUser removes tags from a user.

func (*Handler) UpdateAssumeRolePolicy

func (h *Handler) UpdateAssumeRolePolicy(w http.ResponseWriter, r *http.Request)

UpdateAssumeRolePolicy updates the trust policy document of a role.

func (*Handler) UpdateUser

func (h *Handler) UpdateUser(w http.ResponseWriter, r *http.Request)

UpdateUser updates an IAM user's path or name.

type InstanceProfile

type InstanceProfile struct {
	InstanceProfileName string   `json:"InstanceProfileName"`
	InstanceProfileId   string   `json:"InstanceProfileId"`
	Arn                 string   `json:"Arn"`
	Path                string   `json:"Path"`
	CreateDate          string   `json:"CreateDate"`
	Roles               []string `json:"Roles,omitempty"`
}

InstanceProfile represents an IAM instance profile.

type Policy

type Policy struct {
	PolicyName      string `json:"PolicyName"`
	PolicyId        string `json:"PolicyId"`
	Arn             string `json:"Arn"`
	Path            string `json:"Path"`
	Document        string `json:"Document"`
	CreateDate      string `json:"CreateDate"`
	AttachmentCount int    `json:"AttachmentCount"`
}

Policy represents an IAM managed policy.

type Role

type Role struct {
	RoleName                 string            `json:"RoleName"`
	RoleId                   string            `json:"RoleId"`
	Arn                      string            `json:"Arn"`
	Path                     string            `json:"Path"`
	AssumeRolePolicyDocument string            `json:"AssumeRolePolicyDocument"`
	CreateDate               string            `json:"CreateDate"`
	AttachedPolicies         []AttachedPolicy  `json:"AttachedPolicies,omitempty"`
	InlinePolicies           map[string]string `json:"InlinePolicies,omitempty"`
	Tags                     map[string]string `json:"Tags,omitempty"`
}

Role represents an IAM role.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service implements router.Service and router.QueryDispatcher for IAM. Uses the AWS Query protocol (form-encoded POST body, XML responses).

func New

func New(cfg *config.Config, store state.Store, logger *zap.Logger, clk clock.Clock) *Service

New returns a configured IAM Service.

func (*Service) DispatchQuery

func (s *Service) DispatchQuery(w http.ResponseWriter, r *http.Request)

DispatchQuery satisfies router.QueryDispatcher.

func (*Service) InitBus

func (s *Service) InitBus(bus *events.Bus)

InitBus wires the event bus for resource lifecycle events.

func (*Service) Name

func (s *Service) Name() string

Name satisfies router.Service.

func (*Service) Operations

func (s *Service) Operations() []op.Operation

Operations implements router.ProtocolService.

func (*Service) OwnsAction

func (s *Service) OwnsAction(action string) bool

OwnsAction satisfies router.QueryActionOwner. IAM owns all actions in handler.ops.

func (*Service) RegisterRoutes

func (s *Service) RegisterRoutes(_ chi.Router)

RegisterRoutes satisfies router.Service. IAM has no path-routed endpoints.

func (*Service) SupportedProtocols

func (s *Service) SupportedProtocols() []codec.Codec

SupportedProtocols implements router.ProtocolService.

type User

type User struct {
	UserName         string            `json:"UserName"`
	UserId           string            `json:"UserId"`
	Arn              string            `json:"Arn"`
	Path             string            `json:"Path"`
	CreateDate       string            `json:"CreateDate"`
	AccessKeys       []AccessKey       `json:"AccessKeys,omitempty"`
	InlinePolicies   map[string]string `json:"InlinePolicies,omitempty"`
	AttachedPolicies []AttachedPolicy  `json:"AttachedPolicies,omitempty"`
	Tags             map[string]string `json:"Tags,omitempty"`
}

User represents an IAM user.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL