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 ¶
- type AccessKey
- type AttachedPolicy
- type Group
- type Handler
- func (h *Handler) AddRoleToInstanceProfile(w http.ResponseWriter, r *http.Request)
- func (h *Handler) AddUserToGroup(w http.ResponseWriter, r *http.Request)
- func (h *Handler) AttachGroupPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) AttachRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) AttachUserPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateAccessKey(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateGroup(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateInstanceProfile(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreatePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateServiceLinkedRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) CreateUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteAccessKey(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteGroup(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteGroupPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteInstanceProfile(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeletePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DeleteUserPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DetachGroupPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DetachRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) DetachUserPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetAccountAuthorizationDetails(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetGroup(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetGroupPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetInstanceProfile(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetUserPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListAccessKeys(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListAttachedGroupPolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListAttachedRolePolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListAttachedUserPolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListGroupPolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListGroups(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListGroupsForUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListInstanceProfiles(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListInstanceProfilesForRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListPolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListRolePolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListRoleTags(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListRoles(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListUserPolicies(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListUserTags(w http.ResponseWriter, r *http.Request)
- func (h *Handler) ListUsers(w http.ResponseWriter, r *http.Request)
- func (h *Handler) PutGroupPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) PutRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) PutUserPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) RemoveRoleFromInstanceProfile(w http.ResponseWriter, r *http.Request)
- func (h *Handler) RemoveUserFromGroup(w http.ResponseWriter, r *http.Request)
- func (h *Handler) SimulatePrincipalPolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) TagRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) TagUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) UntagRole(w http.ResponseWriter, r *http.Request)
- func (h *Handler) UntagUser(w http.ResponseWriter, r *http.Request)
- func (h *Handler) UpdateAssumeRolePolicy(w http.ResponseWriter, r *http.Request)
- func (h *Handler) UpdateUser(w http.ResponseWriter, r *http.Request)
- type InstanceProfile
- type Policy
- type Role
- type Service
- func (s *Service) DispatchQuery(w http.ResponseWriter, r *http.Request)
- func (s *Service) InitBus(bus *events.Bus)
- func (s *Service) Name() string
- func (s *Service) Operations() []op.Operation
- func (s *Service) OwnsAction(action string) bool
- func (s *Service) RegisterRoutes(_ chi.Router)
- func (s *Service) SupportedProtocols() []codec.Codec
- type User
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 (*Service) DispatchQuery ¶
func (s *Service) DispatchQuery(w http.ResponseWriter, r *http.Request)
DispatchQuery satisfies router.QueryDispatcher.
func (*Service) Operations ¶
Operations implements router.ProtocolService.
func (*Service) OwnsAction ¶
OwnsAction satisfies router.QueryActionOwner. IAM owns all actions in handler.ops.
func (*Service) RegisterRoutes ¶
RegisterRoutes satisfies router.Service. IAM has no path-routed endpoints.
func (*Service) SupportedProtocols ¶
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.