Skip to content

Define the IAM user permission levels for DevOps and project members #225

Open

Description

@ale210

Overview

We need to decide what each kind of person working in the incubator AWS account can do, so the IAM groups can be built to match. There are two divisions — DevOps and projects — and this issue decides the levels inside each and what each level is allowed to do.

Action Items

  • Decide the levels in each division. A starting point, not a decision: DevOps engineer and DevOps lead; project lead and project developer. Add or merge levels if the work calls for it — for example, whether a new DevOps member starts read-only before becoming an engineer.
  • For each level, write down which AWS services it can use, which actions (read, deploy, change config, delete), and on which resources. Use a table like the one in DR-Machine-to-machine-IAM-scoping so the levels can be compared side by side.
  • Decide what every person gets regardless of level: MFA enforced, change own password, and whether managing your own access keys is part of the baseline (today only ops-leads has ManageAccessKeys).
  • Decide whether the DevOps lead level keeps AdministratorAccess or gets something narrower, and say which actions (if any) are kept for a break-glass path instead.
  • Decide how a project member is tied to their project. IAM groups can't carry tags, so there are two real options:
    • per-project groups whose policies name the project directly (aws:ResourceTag/project = "vrms"), generated by Terraform — the approach Epic: Scope machine-to-machine IAM permissions to projects using the project tag incubator#206 took for machine roles; or
    • a project tag on each user, matched in one shared policy with ${aws:PrincipalTag/project}.
      A tag holds only one value, so the second option doesn't work for someone on two projects. Record which option was picked and why.
  • List the resource types project members need that the DR does not already require to carry the project tag (for example, the Route 53 zones). Every one of these either needs tagging or has to be granted some other way — write down which.
  • Decide who can create and change IAM users, and at what level. (IAMServicesSupervisor was an earlier attempt at this, keyed on an Access Level user tag, and is attached to nothing.)
  • Map every current IAM user (see the epic) to a level in the new scheme, except bonnie_hfla and chelseybeck, which this epic leaves as they are.
  • Write it up as a decision record on the devops wiki named DR-IAM-user-permissions (a dash, never a colon — a colon makes the wiki un-clonable on Windows). List it under both Decision Records and Decision Records on Solutions Adopted.
  • Get sign-off from the CoP leads at the weekly leads meeting, and record the date on the DR.

Resources/Instructions

Activity

  1. added this to the 02 security milestone on Nov 12, 2026
  2. moved this from New Issue Review to Prioritized Backlog in CoP: DevOps: Project Boardon Nov 12, 2026
  3. ale210 commented on Nov 12, 2026

    @ale210
    MemberAuthor

    Examples:

    Projects - Read, Write, Admin

    Devops - Devops Engineer, Devops Lead

  4. moved this from Prioritized Backlog to In progress (actively working) in CoP: DevOps: Project Boardon Nov 12, 2026
  5. here commented on Nov 12, 2026

    @here
    Member

    Notes from 2026-11-11 check in call.

    Start with devops, either read only or admin.

    AWS compute services will be migrated to Azure so avoid that to start. AWS will continue for db, dns, and iam.

    Use test users as needed aws-users.tf-> iam_user_testiamuser
    Create a terraform module with different groups inside it, and add users to groups.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions