Create CI user (AWS)

3557 ワード

Terraformベースのインフラストラクチャを自動化するパイプラインを構築しています.
CIのみの(最小ポリシー)AWSユーザを生成する必要があります.

1.管理者のiamユーザーとしてログイン


最初にawsに加入した場合、そのアカウントはrootユーザーです.
また、rootユーザーは使用しないほうがいいです.
では、管理に使用するiamユーザーは何ですか?
(== administrative user)
スーパーユーザー(アカウント)ではなく新しいユーザーを作成した後、
このアカウントには、管理者権限を持つポリシーが付与されます.
その後rootユーザーは使用されなくなりました.

CIプレイヤーを作成する時だ。


新しいアプリケーションのポリシー(ポリシー)には、次のものが含まれます.
以下のとおりです.

1.ポリシーの作成

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TerraformRequiredPermissions",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ec2:*"
            ],
            "Resource": "*"
        },
        {
          "Sid": "AllowListS3StateBucket",
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::info-share-tfstate"
        },
        {
          "Sid": "AllowS3StateBucketAccess",
          "Effect": "Allow",
          "Action": ["s3:GetObject", "s3:PutObject"],
          "Resource": "arn:aws:s3:::info-share-tfstate/*"
        },
        {
            "Sid": "LimitEC2Size",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "ForAnyValue:StringNotLike": {
                    "ec2:InstanceType": [
                        "t2.micro"
                    ]
                }
            }
        },
        {
            "Sid": "AllowECRAccess",
            "Effect": "Allow",
            "Action": [
                "ecr:*"
            ],
            "Resource": "arn:aws:ecr:us-east-1:*:repository/recipe-app-api-devops"
        },
        {
            "Sid": "AllowStateLockingAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:*:*:table/info-share-tf-state-lock"
            ]
        }
    ]
}

2.ユーザーの作成




2.gitlabの設定


AWS CIユーザーが作成されました.
Gitlab上でCI操作を実行する場合、
環境変数にはAWSDIユーザー情報が必要です.AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY ECR_REPOgitlabプロジェクトに移動します.
左側のsettingsをクリックし、
下図では見えませんが、左のバーGeneralを下にスクロールすると
CI/CDサブタブが再び表示されます.
そのラベルをクリックします.
次に、3つの環境変数を追加する作業を行います.



AWS ECRで作成したリポジトリのURIをコピーします.
gitlab settings->CI/CD->環境変数に追加します.