Рубрики
Uncategorized

Защита ваших ветвей GIT на AWS Codecommit

Дайте гранулированные разрешения, которые могут объединиться в мастер/производственные филиалы при использовании CodeCommit на AWS. Tagged с AWS, GIT, CodeCommit, DevOps.

Бороветс, гора Рила, Болгария

Этот пост дает быстрый рецепт о том, как включить только выбранных пользователей слияние/совершать в филиалы GIT CodeCommit.

Давайте рассмотрим общий сценарий CD/CI: 1) У вас есть команда, которая подталкивает к GIT Repo с важным кодом. 2) Когда готов к развертыванию, кто -то сливается Dev в Мастер 3) Событие Merge запускает предварительно настроенный трубопровод развертывания, который будет упаковывать код из репо, а затем Delpoy его до производства

Вышесказанное очень приятно и все, но необходимо соблюдать осторожность, когда речь идет о том, кому следует разрешать слиться в производственную филиал.

(Прыгайте прямо на образец политики IAM)

Поскольку мы находимся в контексте AWS, решение заключается в использовании услуги IAM (управление идентификацией и доступом). Вот основные этапы решения:

  • Иметь общую группу для всех разработчиков, скажем, Dev-Group Анкет Все разработчики в вашей команде принадлежат этой группе. Разрешены общие действия кодексома — например, тянуть , клон , так далее.
  • Также прикрепите к Dev-Group Политика, которая указывает репозитории, которые мы хотим защитить через Notresource Анкет Для всех других разработчиков Repos может иметь полный доступ, если это так.
  • Есть вторая группа IAM — например, ImpormAntrepo-PowerUser — У него есть политика, которая позволяет слияние / Компет Действия для ImpormAntrepo репо.
  • Добавьте выбранные несколько разработчиков, которые должны быть в состоянии вызвать сборку к этому ImpormAntrepo-PowerUser группа

Зачем писать эту статью — ну, не так очевидно, как реализовать вышеперечисленное. Хитрое — это Логика оценки IAM Анкет Из -за этого наивное решение ниже не сработает:

  • Все разработчики в Dev-Group , избранные несколько в SelectedFew
  • Используйте Отрицание Заявление в политике в Dev-Group Чтобы отказать в слиянии в мастер
  • Прикрепить политику к SelectedFew что позволяет его пользователям сливаться в мастер

Если в Dev-Group Вы добавляете заявление, которое объясняет запрещаетdeny ) Пользователи группы объединяются в Master, тогда невозможно разрешить эти действия в другой политике — поэтому невозможно позволить нашим выбранным немногим разработчикам слияния.

Вот где Notresource пригодится. С ним вы можете исключить защищенные репозитории из данного заявления без явного использования Отрицание действие Анкет Т.е. Вы можете дать полные характеристики всем репозиториям, за исключением защищенных. Поскольку мы не явно не отклоняли действия на защищенных репозиториях, мы можем позже добавить явное разрешение в другую политику — в политике, прикрепленной к SelectedFew группа.

Покажи мне код

Dev-Group-Generic-Policy

Нам нужна Dev-группа, которая дает общие разрешения для всех разработчиков, а также перечисляет защищенные репозитории.

// the policy atached to the Dev-Group
{
  "Version": "2012-10-17",
  "Statement": [
    // generic permissions for all devs
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:Get*",
        "codecommit:GitPull",
        
      ],
      "Resource": "*"
    },

    // the gotcha - in the NotResource put the important repos whose branches you want to protect
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPush",
        "codecommit:DeleteBranch",
        "codecommit:Merge*"
      ],
      "NotResource": [
        "arn:aws:codecommit:*:*:",
        "arn:aws:codecommit:*:*:"
      ]
    },

    // still allow all devs to push to non-production branches of the imporant repos
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPush",
        "codecommit:DeleteBranch",
        "codecommit:Merge*"
      ],
      "Resource": [
        "arn:aws:codecommit:*:*:

Важные репо-1-силовые пользователи

Группа для энергетических пользователей для конкретного важного репо.

// the policy attached to the group for users that can push to all branches for a given important repo 
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPush",
        "codecommit:DeleteBranch",
        "codecommit:Merge*"
      ],
      "Resource": [
        "arn:aws:codecommit:*:*:",
      ]
    }
  ]
}

Чтобы сделать решение более общим, вы можете использовать некоторую соглашение об именах для репозиториев — то есть все имена репо, начинающиеся с xyz- считаются важными, и только пользователи в группе xyz-power-пользователи может слиться в ветвь Prod этих репо.

Оригинал: «https://dev.to/jorotenev/protecting-your-git-branches-on-aws-codecommit-4kol»