ECS-те контейнерді іске қосу немесе жүктеу үшін агенттің GitHub-тағы қол жеткізу құқықтарын қалай баптадыңыз?
sobes.tech AI
AI-дан жауап
GitHub Actions агентінің ECS-ке контейнерлерді іске қосу немесе жүктеу үшін рұқсаттарын баптау үшін келесі қадамдарды орындау қажет:
-
IAM-саясатын жасау: AWS-те қажетті рұқсаттарды беретін жаңа IAM-саясатын жасаңыз. ECS тапсырмасын іске қосу үшін минималды рұқсаттар
ecs:RunTask,ecs:PullImage(ECR үшін),iam:PassRole(егер тапсырма анықтамасында IAM рөлі қолданылса) кіреді.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask", "ecs:DescribeTasks", "ecs:StopTask", "ecs:PullImage", "iam:PassRole" ], "Resource": "*" // нақты ресурстарға шектеу ұсынылады }, { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "arn:aws:ecr:<region>:<account-id>:repository/<repository-name>" // өз ECR репозиторияңыздың ARN-ін көрсетіңіз } ] }Егер тек жүктеу қажет болса, рұқсаттар тек ECR әрекеттерімен шектелуі мүмкін.
-
IAM-пайдаланушы немесе IAM-рөлін жасау:
- IAM-пайдаланушы: Жеке IAM-пайдаланушыны жасаңыз және оған бағдарламалық қол жеткізуді (Access Key ID және Secret Access Key) беріңіз. Бұл пайдаланушыға 1-қадамда жасалған IAM-саясатты қосыңыз. Бұл әдіс қауіпсіз емес, себебі кілттерді сақтау қажет.
- OpenID Connect (OIDC) және GitHub Actions-мен сенім білдіретін IAM-рөл: Бұл қауіпсіз әрі тиімді әдіс. IAM-рөлін жасап, оны OIDC провайдерімен сенім қатынастарын орнатыңыз. GitHub репозиторийіңізден ғана қол жеткізуді шектеу үшін OIDC шартын баптаңыз. Бұл рөлге 1-қадамда жасалған IAM-саясатты қосыңыз.
// OIDC сенім саясатының мысалы { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<account-id>:oidc-provider/token.actions.githubusercontent.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" }, "StringLike": { "token.actions.githubusercontent.com:sub": "repo:<owner>/<repository>:*" } } } ] }<account-id>,<owner>,<repository>мәндерін өз деректеріңізбен ауыстырыңыз. -
GitHub Actions-ты баптау:
- IAM-пайдаланушы үшін: Access Key ID және Secret Access Key-ді GitHub репозиторийіндегі құпиялар ретінде сақтаңыз (мысалы,
AWS_ACCESS_KEY_IDжәнеAWS_SECRET_ACCESS_KEY)..github/workflows/*.ymlфайлында осы құпияларды аутентификация үшін пайдаланыңыз. - IAM-рөлмен OIDC үшін:
.github/workflows/*.ymlфайлында жасалған IAM-рөлдің ARN-ін көрсетіңіз. GitHub Actions автоматты түрде уақытша деректер алады, OIDC пайдалану арқылы. Бұл әдіс AWS құпияларын GitHub-та сақтауды қажет етпейді.
# OIDC пайдалану мысалы name: ECS-ке орналастыру on: push: branches: - main permissions: id-token: write # OIDC токенін алу рұқсаты contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Кодты тексеру uses: actions/checkout@v4 - name: AWS құпияларын баптау uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::<account-id>:role/<your-iam-role-name> # OIDC-мен үйлесімді IAM-рөлінің ARN-ін көрсетіңіз aws-region: <your-region> - name: ECS тапсырмасын іске қосу run: | aws ecs run-task \ --cluster <your-ecs-cluster> \ --task-definition <your-task-definition> \ --launch-type FARGATE \ --network-configuration "awsvpcConfiguration={subnets=[<subnet-id>],securityGroups=[<security-group-id>],assignPublicIp='ENABLED'}"<account-id>,<your-iam-role-name>,<your-region>,<your-ecs-cluster>,<your-task-definition>,<subnet-id>,<security-group-id>мәндерін өзіңізге сәйкес өзгертіңіз. - IAM-пайдаланушы үшін: Access Key ID және Secret Access Key-ді GitHub репозиторийіндегі құпиялар ретінде сақтаңыз (мысалы,
OIDC-рөлін пайдалану қауіпсіздік пен икемділікті арттырады. Ең аз құқық қағидатын қолдану үшін IAM-саясатты шектеу керек, яғни рұқсат етілген әрекеттер мен ресурстарды ең аз деңгейге дейін шектеу керек.