Соответствуют ли правила политики IAM правилам перекрытия (и переопределения) экземпляров EC2 к задаче ECS, выполняемой в EC2? - PullRequest
0 голосов
/ 06 февраля 2020

Ниже приведена роль, принятая экземпляром EC2:

"AScaleLaunchConfig": {
            "Type": "AWS::AutoScaling::LaunchConfiguration",
            "Properties":{
                …..
                "IamInstanceProfile": { "Ref": "EC2InstProfl” },
                …..
            }
        }


"EC2InstProfl": {
            "Type": "AWS::IAM::InstanceProfile",
            "Properties":{
                "Path": "/",
                "Roles": [ {  "Ref": "EC2InstRole" } ]
            }
        }


  "EC2InstRole": {
            "Type": "AWS::IAM::Role",
            "Properties": {
                "AssumeRolePolicyDocument": {
                    "Version": "2012-10-17",
                    "Statement": [
                      {
                          "Effect": "Allow",
                          "Principal": { "Service": [ "ec2.amazonaws.com" ] },
                          "Action": [ "sts:AssumeRole" ]
                      }        
                    ]
                },
                "Path": "/",
                "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role" ],
            }
        }

Ниже SomeTaskRole назначена задача (контейнер docker), запущенная в этом экземпляре EC2:

"EcsTaskDef": {
            "Type": "AWS::ECS::TaskDefinition",
            "Properties":{
                "NetworkMode": "host",
                "TaskRoleArn": "arn:aws:iam::xxxxxxxxx:role/SomeTaskRole",
                "ContainerDefinitions": [
                    {
                        "Name": “someapp",
                        "Image": “someaccout/someimage:test",

                    }
                ]
            }
        }

где SomeTaskRole:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Description": “Allow access to all EC2/ELB/cloudformation/s3 and aim passrole",    
            …..
            "Resource": "*"
        },
        {
            "Description": “Assume iam User role“,
             ….. 
           "Effect": "Allow"
        },
        {
            "Description": “Assume xyz role across all accouts“,
             …..
            "Effect": "Allow"
        },
        {
            "Description": “Allow * access to all resource across n regions",
              ….
        },
        {
            "Description": “Deny delete permission on network related resources like Subnets/Route/VPC/VPN/IGW etc…*,
              ….
        },
        {
            "Description": “There are many such rules",
              ….
        }

    ]
}

Если для экземпляра EC2 назначено EC2InstRole, то стек Cloudformation запускается успешно.

Если SomeTaskRole присваивается EcsTaskDef , а EC2InstRole присваивается экземпляру EC2, после чего запуск стека Cloudformation идет в течение нескольких часов и выдает ошибку. Еще предстоит найти точную ошибку. Если я удаляю "TaskRoleArn": "arn:aws:iam::xxxxxxxxx:role/SomeTaskRole", то стек CloudFormation запускается успешно.


1)

Позволяет ли служба AWS IAM обоим?

назначать роль для задачи ECS

и

, чтобы назначить роль для экземпляра EC2?

2)

Если да, накладываются ли правила, указанные в роли EC2, на (и переопределяют) правила задан в роли задания ECS?

1 Ответ

2 голосов
/ 06 февраля 2020

Задача ECS ТОЛЬКО получает роль / разрешения, назначенные задаче. Он не получает разрешений от хоста.

Когда вы видите, как CloudFormation "зависает", как это, это вероятно, потому что задачи никогда не достигают устойчивого состояния. Самый простой способ решить проблему - это посмотреть на неудачные задачи в ECS. Для этого откройте кластер ECS, выберите вкладку Задачи и покажите Остановленные задачи. Откройте один и посмотрите на свернутую информацию внизу. Часто там содержится довольно полезная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...