首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >新的密钥策略将不允许您在未来更新关键策略。

新的密钥策略将不允许您在未来更新关键策略。
EN

Stack Overflow用户
提问于 2017-02-01 15:05:10
回答 4查看 17.4K关注 0票数 12

标题说明了一切。每当我试图通过AWS CloudFormation模板创建一个KMS键时,我就会得到这个错误。我是以具有管理权限的IAM用户的身份创建模板的,我希望在同一个具有KMS权限的AWS帐户中的任何IAM用户都可以管理该密钥。我使用以下YAML资源定义作为密钥:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LambdaKmsKey:
    Type: AWS::KMS::Key
    Properties:
      Enabled: true
      KeyPolicy:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Action: kms:*
          Principal:
            AWS: <Principle>

然而,即使我试图以根用户的身份创建堆栈,<Principal>的下列值都不起作用!

  • !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]
  • !Join [ "", [ "arn:aws:sts::", !Ref "AWS::AccountId", ":root" ] ]
  • !Ref "AWS::AccountId"

我不能仅仅为主体硬编码我的用户名,因为我希望这个模板能够被任何拥有堆栈创建权限的人实例化。有谁知道如何解决这个非常令人沮丧的问题吗?提前谢谢。

编辑

我应该指出,我不再在CloudFormation模板中定义KMS关键策略。实际上,我现在完全避免在CF模板中定义任何安全资源,比如IAM实体、策略和ACM证书。我在这个GitHub问题中描述了原因。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-02-01 15:50:01

您缺少了Resource: "*"属性。这对我起了作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  LambdaKmsKey:
    Type: AWS::KMS::Key
    Properties:
      Enabled: true
      KeyPolicy:
        Version: 2012-10-17
        Statement:
        - Effect: Allow
          Action: kms:*
          Resource: "*"
          Principal:
            AWS: !Join [ "", [ "arn:aws:iam::", !Ref "AWS::AccountId", ":root" ] ]

Resource: "*" 是必需的,并且是唯一可能的值。

资源-(必需)在关键策略中,对资源使用"*“,这意味着”此CMK“。一个关键的策略只适用于它所附属的CMK。

有关示例,请参见https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/

票数 14
EN

Stack Overflow用户

发布于 2020-12-15 05:55:50

如果这对某人有帮助,请注意https://aws.amazon.com/premiumsupport/knowledge-center/update-key-policy-future/中的备注

重要:确保您创建的关键策略允许当前用户管理CMK。

在从管道中部署模板时,我遇到了这个问题,而建议的解决方案对我不起作用。用于部署模板的角色具有相应的kms权限,但它也需要在密钥策略的主体中!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  - Effect: Allow
    Action: kms:*
    Resource: "*"
    Principal:
      AWS:
        - !Sub arn:aws:iam::${AWS::AccountId}:role/PipelineRole 
票数 6
EN

Stack Overflow用户

发布于 2019-04-22 10:34:38

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LambdaKmsKey:
  Type: AWS::KMS::Key
  Properties:
    Description: Key for Lambda function
    Enabled: True
    KeyPolicy:
      Version: '2012-10-17'
      Id: key-consolepolicy-3
      Statement:
        - Sid: Enable IAM User Permissions
          Effect: Allow
          Principal:
            AWS: arn:aws:iam::AwsAccountId:root
          Action: kms:*
          Resource: "*"
        - Sid: Allow use of the key
          Effect: Allow
          Principal:
            AWS:
              Fn::GetAtt: [ IamRoleLambdaExecution, Arn ]
          Action:
            - kms:Decrypt
            - kms:Encrypt
          Resource: "*"

此策略有点危险,因为它给帐户下的任何用户或角色以kms:解密权限来解密和查看密钥,这是不安全的,而且无法通过笔试。

如果你想拿走解密的权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LambdaKmsKey:
  Type: AWS::KMS::Key
  Properties:
    Description: Key for Lambda function 
    Enabled: True
    KeyPolicy:
      Version: '2012-10-17'
      Id: key-consolepolicy-3
      Statement:
        - Sid: Enable IAM User Permissions
          Effect: Allow
          Principal:
            AWS: arn:aws:iam::AwsAccountId:role/sudo
          Action:
            - kms:Create*
            - kms:Describe*
            - kms:Enable*
            - kms:List*
            - kms:Put*
            - kmzs:Update*
            - kms:Revoke*
            - kms:Disable*
            - kms:Get*
            - kms:Delete*
            - kms:ScheduleKeyDeletion
            - kms:CancelKeyDeletion
            - kms:Encrypt
          Resource: "*"
        - Sid: Enable IAM User Permissions
          Effect: Allow
          Principal:
            AWS: arn:aws:iam::AwsAccountId:role/admin
          Action:
            - kms:Create*
            - kms:Describe*
            - kms:Enable*
            - kms:List*
            - kms:Put*
            - kmzs:Update*
            - kms:Revoke*
            - kms:Disable*
            - kms:Get*
            - kms:Delete*
            - kms:ScheduleKeyDeletion
            - kms:CancelKeyDeletion
            - kms:Encrypt
          Resource: "*"
        - Sid: Enable IAM User Permissions
          Effect: Allow
          Principal:
            AWS: arn:aws:iam::AwsAccountId:root
          Action:
            - kms:List*
            - kms:Get*
            - kms:Encrypt
          Resource: "*"
        - Sid: Allow use of the key
          Effect: Allow
          Principal:
            AWS:
              Fn::GetAtt: [ IamRoleLambdaExecution, Arn ]
          Action:
            - kms:Decrypt
            - kms:Encrypt
          Resource: "*"

通过这种方式,除了解密到sudo和admin角色之外,我还授予了所有其他权限(确保您有这些角色)。

我给角色和具有列表、获取和加密权限的用户提供列表、获取和加密权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41991480

复制
相关文章
koa-redis进行数据的读写
简单介绍:Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务,同时它也支持数据的持久化,
biaoblog.cn 个人博客
2022/08/11
3400
Elasticsearch探索:store 属性
默认情况下,对字段值进行索引以使其可搜索,但不存储它们 (store)。 这意味着可以查询该字段,但是无法检索原始字段值。在这里我们必须理解的一点是: 如果一个字段的 mapping 中含有 store 属性为 true,那么有一个单独的存储空间为这个字段做存储,而且这个存储是独立于 _source 的存储的。它具有更快的查询。存储该字段会占用磁盘空间。如果需要从文档中提取(即在脚本中和聚合),它会帮助减少计算。在聚合时,具有store属性的字段会比不具有这个属性的字段快。 此选项的可能值为 false 和 true。
HLee
2020/12/31
1.2K0
Elasticsearch探索:store 属性
opencv无法读取图片_opencv无法读取图片
使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。
全栈程序员站长
2022/11/04
2.4K0
39 - 读取XML节点和属性值
在当前目录下有一个products.xml 文件,要求读取该文件中products节点的所有子节点的值以及子节点的属性值 <!-- products.xml --> <root> <products> <product uuid="1234"> <id>10000</id> <name>iphone9</name> <price>9999</price> </product> <product uuid="4321"> <id>20000</id> <name>
ruochen
2021/05/25
2.5K0
39 - 读取XML节点和属性值
Laravel5.3之Session源码解析(上)
说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助。Laravel在web middleware中定义了session中间件\Illuminate\Session\Middleware\StartSession::class,并通过该中间件来设计session,这个中间件的主要工作分为三步:
botkenni
2022/01/10
2.1K0
使用文件和目录属性和属性
%Library.File类还提供了许多类方法,可以使用这些方法来获取有关文件和目录的信息,或者查看或设置它们的属性和属性。
用户7741497
2022/07/05
6880
jackson设置读取属性时使用大写序列化属性时使用小写
jackson是一种使用广泛的json序列化库,虽然性能上可能不如fastjson,但是从其标准性以及安全性上来看(近一年爆出了不少fastjson的漏洞),下面就介绍下本文的主题,jackson序列化以及反序列化时可能用到的几个注解:
johnhuster的分享
2022/03/28
1.3K0
Elasticsearch: 理解 mapping 中的 store 属性
默认情况下,对字段值进行索引以使其可搜索,但不存储它们 (store)。 这意味着可以查询该字段,但是无法检索原始字段值。在这里我们必须理解的一点是: 如果一个字段的 mapping 中含有 store 属性为 true,那么有一个单独的存储空间为这个字段做存储,而且这个存储是独立于 _source 的存储的。它具有更快的查询。存储该字段会占用磁盘空间。如果需要从文档中提取(即在脚本中和聚合),它会帮助减少计算。在聚合时,具有store属性的字段会比不具有这个属性的字段快。 此选项的可能值为 false 和 true。
腾讯云大数据
2020/10/28
1.9K0
Elasticsearch: 理解 mapping 中的 store 属性
Node.js 文件系统--读取和删除目录
读取目录 语法 以下为读取目录的语法格式: fs.readdir(path, callback) 参数 参数使用说明如下: path - 文件路径。 callback - 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为 目录下的文件数组列表。 实例 接下来我们创建 file.js 文件,代码如下所示: var fs = require("fs"); console.log("查看 /tmp 目录"); fs.readdir("/tmp/",function(err,
陈不成i
2021/07/12
3.2K0
Mac无法读取硬盘
问题描述: 由于没有弹出移动硬盘,就拔出来了。导致再插入硬盘,电脑也无法识别了。 步骤: 1.查看一下硬盘信息 画圈的就是我的硬盘。 2.将这个硬盘挂载 sudo diskutil mount /dev/disk2s1 然后需要输入的就是你的密码(开机密码) 可以看到,已经挂载成功了。
用户4793865
2023/01/12
1.1K0
C#反射读取和设置类的属性
http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html
跟着阿笨一起玩NET
2018/09/19
2K0
【Node.JS】读取文件内容
fs模块是Node.js官方提供的,用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求,
坚毅的小解同志的前端社区
2022/11/28
11.6K0
【Node.JS】读取文件内容
spring-PropertyPlaceholderConfiger读取属性
spring在读取配置文件的时候,我们时常使用@Value注解来注入配置文件中的配置,在配置文件中也可以通过${}的方式来引用已经申明的配置,这是依靠Spring提供的PropertyPlaceholderConfigure来实现的。
leobhao
2022/06/28
6200
python读取图片属性信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。
全栈程序员站长
2022/10/01
2.1K0
python读取图片属性信息
修复应用无法通过App Store升级的问题
1.点击左上角菜单 进入 About this Mac(关于本台Mac) 2.切换到 Storage(存储) 3.点击Manage(管理) 4.切换到Applications(应用程序) 删除对应的Wechat安装包即可。
技术小黑屋
2020/01/20
7350
修复应用无法通过App Store升级的问题
使用python读取和写入Excel
一、安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。 二、使用介绍 1、导入模块 import xlrd 2、打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') 3、使用技巧 获取一个工作表 table = data.sheets()[0] #通过索引顺序获取
阿章-python小学生
2018/05/18
1.7K0
【Laravel系列4.7】连接redis以及缓存应用
在现代的数据库应用中,Redis 已经占据了很重要的位置。关于 Redis 的优点相信也不用我多说了,快速的内容访问也能够充当缓存数据库来使用。早前几年还有不少的公司在使用 Memcached ,但是现在就已经屈指可数了。毕竟在同样的功能下,Redis 拥有更多的数据类型,也能适应更多的场景。Laravel 也是可以完美支持 Memcached 的,不过这个就不在我们的学习范围里了,有兴趣的同学可以自己研究一下。注意,是 Memcached 不是 Memcache 哦,Memcache 是已经相当于被淘汰的技术了。
硬核项目经理
2023/03/03
1.1K0
【Laravel系列4.7】连接redis以及缓存应用
Nest.js进阶系列四:Node.js中使用Redis原来这么简单!
JWT token 实现方式, 将基本信息直接放在token中,以便于分布式系统使用, 但是我们没有设置有限期(这个是可以实现的),并且服务端无法主动让token失效。而Redis天然支持过期时间,也能实现让服务端主动使token过期。
江涛学编程
2023/05/27
2.6K0
Nest.js进阶系列四:Node.js中使用Redis原来这么简单!
点击加载更多

相似问题

RedisStore - TypeError:无法读取未定义的属性“prototype”

11

eko gocache for redis ::store.RedisStore没有实现store.StoreInterface

110

RedisStore.prototype.__proto__ = Store.prototype

18

Uncaught :无法读取属性'$store‘的null

10

无法读取未定义的属性(读取“”$store“”)

2161
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文