IAM и перекрестная запись в корзину S3: разрешить участнику службы на основе идентификатора организации

#amazon-web-services #amazon-s3 #amazon-iam #amazon-vpc

#amazon-веб-сервисы #amazon-s3 #amazon-iam #amazon-vpc

Вопрос:

У меня много учетных записей AWS. Я включил журналы потока VPC для всех из них, и я хочу отправлять эти журналы в центральную корзину S3 в своих учетных записях архива журналов.

Политика IAM, которая работает, заключается в следующем:

 {
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AWSLogDeliveryWrite",
        "Effect": "Allow",
        "Principal": {"Service": "delivery.logs.amazonaws.com"},
        "Action": "s3:PutObject",],
        "Resource": "arn:aws:s3:::central_log_archive_bucket",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": <account_id-1>,
                "aws:SourceAccount": <account_id-2>,
                "aws:SourceAccount": <account_id-3>,
                ...
                "aws:SourceAccount": <account_id-N>
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:logs:*:<account_id-1>:*",
                "aws:SourceArn": "arn:aws:logs:*:<account_id-2>:*",
                "aws:SourceArn": "arn:aws:logs:*:<account_id-3>:*",
                ...
                "aws:SourceArn": "arn:aws:logs:*:<account_id-N>:*",

            }
        }
    }
  ]
}
 

Я хочу упростить это. Вместо добавления всех идентификаторов учетных записей, как показано выше, я хочу разрешить ЛЮБОЙ службе VPC, принадлежащей учетной записи AWS в моей организации, публиковать журналы в S3. Короче говоря, я хочу сделать что-то вроде:

 {
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AWSLogDeliveryWrite",
        "Effect": "Allow",
        "Principal": {"Service": "delivery.logs.amazonaws.com"},
        "Action": "s3:PutObject",],
        "Resource": "arn:aws:s3:::central_log_archive_bucket",
        "Condition": {
         "StringEquals": {
          "aws:PrincipalOrgID": "ID"
         }
        }
    }
  ]
}
 

Но я вижу следующее сообщение об ошибке:

Unsupported Condition Key for Service Principal

Есть идеи, как заставить это работать?

Ответ №1:

Как упоминалось здесь https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html,

Вы не можете использовать некоторые ключи условий с определенными участниками службы. Например, вы не можете использовать ключ aws:PrincipalOrgID условия с участником службы cloudfront.amazonaws.com. или другим сервисом, таким как журналы. Вы должны удалить ключи условий, которые не применяются к участнику службы в основном элементе.

Вы можете автоматизировать это с помощью лямбда-выражения при создании каждой учетной записи, например, для изменения политики корзины…