Documentation
¶
Overview ¶
Package iam contains functions that interact with the AWS IAM service along with the data structures necessary to integrate this data cleanly.
Index ¶
- func EnrichRoleWithPolicies(ctx context.Context, cfg aws.Config, role *types.Role) (RoleResource, []PolicyResource, error)
- func GetAllRoles(ctx context.Context, client *iam.Client) ([]types.Role, error)
- func GetInlinePoliciesForRole(ctx context.Context, cfg aws.Config, roleName string) ([]*iam.GetRolePolicyOutput, error)
- func GetRoleDetails(ctx context.Context, cfg aws.Config, roleName string) (*types.Role, error)
- type AWSResourceReport
- type AWSResources
- type DecodedPolicyVersion
- type DecodedRole
- type InlinePolicy
- type PolicyReport
- type PolicyResource
- type RoleResource
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EnrichRoleWithPolicies ¶
func EnrichRoleWithPolicies(ctx context.Context, cfg aws.Config, role *types.Role) (RoleResource, []PolicyResource, error)
EnrichRoleWithPolicies retrieves the attached and inline policies for a given IAM role. It returns a RoleResource struct that contains the role, any attached policies, and any inline policies. It also returns a slice of PolicyResource structs that contain the attached policies for the role.
func GetAllRoles ¶
GetAllRoles retrieves all Roles that are available to the caller.
func GetInlinePoliciesForRole ¶
func GetInlinePoliciesForRole(ctx context.Context, cfg aws.Config, roleName string) ([]*iam.GetRolePolicyOutput, error)
GetInlinePoliciesForRole captures any policies that have been inlined within a given IAM role. It returns a slice of the AWS GetRolePolicyOutput struct. If the client is unable to list policies for the role, it will return an error.
Types ¶
type AWSResourceReport ¶ added in v0.0.4
type AWSResourceReport struct {
AccountID string `json:"account_id" yaml:"account_id"`
Resources AWSResources `json:"resources" yaml:"resources"`
Errors []string `json:"errors" yaml:"errors"`
}
AWSResourceReport is a struct that contains The Resources and Errors.. This struct is used to represent the output of the `methodaws iam role` subcommand, easing data integration and providing a more holistic view of all of the IAM roles and policies that are available to the current AWS account.
func EnumerateIamRoles ¶
EnumerateIamRoles retrieves all IAM roles available to the caller. It returns a AWSResourceReport struct that contains all roles, attached or inline policies, and any non-fatal errors that occurred during the execution of the function.
type AWSResources ¶ added in v0.0.4
type AWSResources struct {
Roles []RoleResource `json:"roles" yaml:"roles"`
Policies PolicyReport `json:"policy_report" yaml:"policy_report"`
}
AWSResources is a struct that contains a slice of RoleResource structs and a PolicyReport. This struct is used to represent the output of the `methodaws iam` subcommand, easing data integration and providing a more holistic view of all of the IAM roles and policies that are available to the current AWS account.
type DecodedPolicyVersion ¶
type DecodedPolicyVersion struct {
CreateDate *time.Time `json:"create_date" yaml:"create_date"`
// The policy document, decoded from its AWS provided URL encoding to a stringified JSON object
Document *string `json:"document" yaml:"document"`
IsDefaultVersion bool `json:"is_default_version" yaml:"is_default_version"`
VersionID *string `json:"version_id" yaml:"version_id"`
}
DecodedPolicyVersion is a struct that contains the decoded policy version details. This struct provides us with a mechanism to decode the policy document from its AWS provided URL encoding to a stringified JSON object.
type DecodedRole ¶
type DecodedRole struct {
Role types.Role `json:"role" yaml:"role"`
DecodedAssumeRolePolicyDocument *string `json:"decoded_assume_role_policy_document" yaml:"decoded_assume_role_policy_document"`
}
DecodedRole is a struct that contains the role details and the decoded assume role policy document. This struct is used to represent the role details of an IAM role in a more human-readable format.
type InlinePolicy ¶
type InlinePolicy struct {
PolicyName string `json:"policy_name" yaml:"policy_name"`
Policy string `json:"policy" yaml:"policy"`
}
InlinePolicy is a struct that contains the policy name and policy document. This struct is used to represent the inline policies that are attached to an IAM role.
type PolicyReport ¶
type PolicyReport struct {
Policies []PolicyResource `json:"policies" yaml:"policies"`
Errors []string `json:"errors" yaml:"errors"`
}
PolicyReport is a struct that contains a slice of PolicyResource structs and any errors that occurred during the collection of the policies. This struct is used to represent the output of the `methodaws iam policies` subcommand.
func GetAttachedPoliciesForRole ¶
GetAttachedPoliciesForRole captures any policies that have been attached to a given IAM role. It returns a PolicyReport struct that contains the attached policies and any non-fatal errors that occurred during the execution of the function.
type PolicyResource ¶
type PolicyResource struct {
Policy types.Policy `json:"policy" yaml:"policy"`
PolicyVersion DecodedPolicyVersion `json:"policy_version" yaml:"policy_version"`
}
PolicyResource is a struct that contains the policy and policy version details. This struct is used to represent the native AWS policy response alongside the decoded policy version.
type RoleResource ¶
type RoleResource struct {
Role DecodedRole `json:"role" yaml:"role"`
AttachedPoliciesArns []string `json:"attached_policies_arns" yaml:"attached_policies_arns"`
InlinePolicies []*InlinePolicy `json:"inline_policies" yaml:"inline_policies"`
}
RoleResource is a struct that contains the role details, attached policies, and inline policies for an IAM role. This struct is used to represent the output of the `methodaws iam role` subcommand, providing the most holistic information possible about all of the policies that a Role has available to it.