【问题标题】:What is wrong with this AWS EFS policy?此 AWS EFS 策略有什么问题?
【发布时间】:2020-08-08 17:23:09
【问题描述】:

我在使用 AWS 方面还很陌生,我只是在尝试和学习。所以我有一个附加了 IAM 角色的 EC2 实例。我还有一个具有以下策略的 EFS 文件系统。我的意图是限制将访问点安装到附加了 IAM 角色的 EC2 实例。

但是,当我尝试从 EC2 实例挂载时,访问被拒绝。

mount.nfs4: 挂载 127.0.0.1 时服务器拒绝访问:

如果我将主体更改为“AWS”:“*”,我可以安装访问点。根据文档,我可以将 EC2 实例使用的 IAM 角色指定为委托人,但它似乎不起作用。

我怀疑我的问题出在我附加到 EC2 实例的角色上。该角色具有 EFS 客户端操作,但是当我在 IAM 控制台中查看该角色并检查访问顾问时,它说该角色从未被访问过。所以我可能做错了什么。

{
    "Version": "2020-08-08",
    "Id": "access-point-www",
    "Statement": [
        {
            "Sid": "access-point-webstorage",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::12345678:role/wwwservers"
            },
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite"
            ],
            "Resource": "arn:aws:elasticfilesystem:us-east-1:12345678:file-system/fs-987654da",
            "Condition": {
                "StringEquals": {
                    "elasticfilesystem:AccessPointArn": "arn:aws:elasticfilesystem:us-east-1:12345678:access-point/fsap-01ffffbfb38217bcd"
                }
            }
        }
    ]
}

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-efs


    【解决方案1】:

    您是否启用了 IAM 挂载?否则,AWS 会尝试以匿名原则挂载 EFS 卷。

    对于 EC2,就像您的情况一样,您可能只需提供 -o iam 作为您调用挂载的选项。
    见:https://docs.amazonaws.cn/en_us/efs/latest/ug/efs-mount-helper.html#mounting-IAM-option

    对于 ECS/任务定义,可以这样完成:

    像这样: aws_ecs_task_definition.volume.efs_volume_configuration.authorization_config?

    resource "aws_ecs_task_definition" "service" {
      family = "something"
      container_definitions = file("something.json")
    
      volume {
        name = "service-storage"
        
        efs_volume_configuration {
          file_system_id     = aws_efs_file_system.efs[0].id
          root_directory     = "/"
          transit_encryption = "ENABLED"
          authorization_config {
            iam = "ENABLED"
          }
        }
      }
    }
    

    iam - (可选)在挂载 Amazon EFS 文件系统时是否使用任务定义中定义的 Amazon ECS 任务 IAM 角色。如果启用,则必须在 EFSVolumeConfiguration 中启用传输加密。有效值:启用、禁用。如果省略此参数,则使用默认值 DISABLED。

    如果您的 CloudTrail 中出现匿名主体尝试挂载您的 EFS 的错误,这将为您提供帮助。错误看起来像这样:

    {
        "eventVersion": "1.08",
        "userIdentity": {
            "type": "AWSAccount",
            "principalId": "",
            "accountId": "ANONYMOUS_PRINCIPAL"
        },
        "eventSource": "elasticfilesystem.amazonaws.com",
        "eventName": "NewClientConnection",
        "sourceIPAddress": "AWS Internal",
        "userAgent": "elasticfilesystem",
        "errorCode": "AccessDenied",
        "readOnly": true,
        "resources": [
            {
                "accountId": "XXXXXX",
                "type": "AWS::EFS::FileSystem",
                "ARN": "arn:aws:elasticfilesystem:eu-west-1:XXXXXX:file-system/YYYYYY"
            }
        ],
        "eventType": "AwsServiceEvent",
        "managementEvent": true,
        "eventCategory": "Management",
        "recipientAccountId": "XXXXXX",
        "sharedEventID": "ZZZZZZZZ",
        "serviceEventDetails": {
            "permissions": {
                "ClientRootAccess": false,
                "ClientMount": false,
                "ClientWrite": false
            },
            "sourceIpAddress": "nnnnnnn"
        }
    }
    

    注意:"principalId": "","accountId": "ANONYMOUS_PRINCIPAL"

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多