【问题标题】:how to deny create sqs queue permission to all users if the queue is not encrypted如果队列未加密,如何拒绝对所有用户创建 sqs 队列权限
【发布时间】:2022-08-14 16:02:57
【问题描述】:

如果他们在创建时忘记加密队列,我正在尝试为所有用户“拒绝”创建 sqs 队列 (sqs:CreateQueue) 权限。我尝试了以下策略,但该策略仍然允许用户在加密与否时创建队列。

 {
  \"Version\": \"2012-10-17\",
  \"Statement\": [
    {
      \"Sid\": \"denysqsifnotencrypted\",
      \"Action\": \"sqs:CreateQueue\",
      \"Effect\": \"Deny\",
      \"Resource\": \"*\",
       \"Condition\": {
           \"ForAnyValue:StringNotEquals\": {
            \"aws:CalledVia\": [\"kms.amazonaws.com\"]
            }
        }
    }
  ]
}
  • 我的解决方案对您有用吗?

标签: amazon-web-services amazon-iam


【解决方案1】:

令人惊讶的是,您将无法执行此操作,因为 SQS 不支持任何条件键。来自documentation

SQS 没有可在策略语句的 Condition 元素中使用的特定于服务的上下文键。

作为一种解决方法,您可以创建一个 EventBridge 规则,只要在没有 KMS 密钥的情况下创建 SQS 队列,就会触发该规则。

EventBridge 规则如下所示:

{
  "source": ["aws.sqs"],
  "detail-type": ["AWS API Call via CloudTrail"],
  "detail": {
    "eventSource": ["sqs.amazonaws.com"],
    "eventName": ["CreateQueue"],
    "requestParameters": {
      "attribute": {
        "KmsMasterKeyId": [""]
      }
    }
  }
}

然后,您可以将 AWS Lambda 函数配置为 Eventbridge 规则的目标,并且您可以让此函数立即删除队列(您甚至可以通过带有 SES 的电子邮件通知您的用户)。

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2018-02-13
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多