- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
努力将最小权限原则应用于我正在创建的 CMK,目标是创建一个可通过 StackSets 供整个组织使用的 CloudFormation 模板。因此,我想要一个可用于帐户中一般加密任务的 key ( kms:Encrypt
、 kms:Decrypt
等),但不能由帐户中的主体修改(特别是 kms:PutKeyPolicy
但不仅如此) .
我有一个从手工制作的 key 中提取出来的工作策略。 CloudFormation 模板工作正常,StackSet 启动资源创建。
但是仅当我不以任何条件限制帐户主体时,这会消除最小权限原则。 CreateKey
和 PutKeyPolicy
API 调用都有一个选项 BypassPolicyLockoutSafetyCheck
对于我们这些白痴到认为自己更了解的人来说!除了 CloudFormation 不会公开 AWS::KMS::Key
的内容:(
因此,除非我基本上将关键策略保持开放状态,否则我会在堆栈中收到以下错误:
Resource handler returned message: "The new key policy will not allow you to update the key policy in the future. (Service: Kms, Status Code: 400, Request ID: xxxx, Extended Request ID: null)" (RequestToken: xxxx, HandlerErrorCode: InvalidRequest)
我已经为主体尝试了多种选项,其中 Condition
删除(如下) key 已创建,但没有高兴。
- Sid: AllowUpdatesByCloudFormation
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
Action:
- kms:Describe*
- kms:List*
- kms:PutKeyPolicy
- kms:CreateAlias
- kms:UpdateAlias
- kms:UpdateKeyDescription
- kms:EnableKey
- kms:DisableKey
- kms:EnableKeyRotation
- kms:DisableKeyRotation
- kms:GetKey*
- kms:DeleteAlias
- kms:TagResource
- kms:UntagResource
- kms:ScheduleKeyDeletion
- kms:CancelKeyDeletion
Resource: '*'
# Condition:
# StringEquals:
# "aws:PrincipalAccount": !Sub ${AWS::AccountId}
# "kms:ViaService": !Sub "cloudformation.${AWS::Region}.amazonaws.com"
我尝试过不同的主要设置,包括 AWS: "*"
还有一些不同的Service
Condition
上的选项和不同设置。我尝试过在服务名称中包含或不包含区域。我肯定漏掉了一些东西,但我已经花了几个小时来思考这个问题。
网络搜索、AWS 论坛搜索一无所获,所以我希望 StackOverflow 的好心人能够指导我 - future 我也会寻求同样的帮助:)
似乎无法链接到 AWS KMS API 页面上的表部分以获取 CreateKey
or PutKeyPolicy
上的条件键。但我不认为我错过了这些技巧?
提前致谢 - 罗伯特。
最佳答案
尝试授予 root 用户所有 kms 权限 - (kms:*)授予 root 所有访问权限时,最小权限原则仍然适用。
这将启用 IAM 用户权限。
向每个角色、用户或用户组添加其他策略。添加 key 管理策略。添加使用策略。您可以在此处微调您的访问权限。
尝试使用这个关键策略并对其进行调整。这是我在 cfn 堆栈中用于 RDS 加密的 key 。(是的!我知道策略应该应用于用户组,而不是直接应用于最佳实践的用户......但这是在我可以从“aCloud guru”访问的沙箱环境内)
KeyPolicy:
Id: key-consolepolicy-3
Version: "2012-10-17"
Statement:
- Sid: Enable IAM User Permissions
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
Action: kms:*
Resource: '*'
- Sid: Allow access for Key Administrators
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam::${AWS::AccountId}:role/admin"
- !Sub "arn:aws:iam::${AWS::AccountId}:user/cloud_user"
Action:
- kms:Create*
- kms:Describe*
- kms:Enable*
- kms:List*
- kms:Put*
- kms:Update*
- kms:Revoke*
- kms:Disable*
- kms:Get*
- kms:Delete*
- kms:TagResource
- kms:UntagResource
- kms:ScheduleKeyDeletion
- kms:CancelKeyDeletion
Resource: '*'
- Sid: Allow use of the key
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS"
Action:
- kms:Encrypt
- kms:Decrypt
- kms:ReEncrypt*
- kms:GenerateDataKey*
- kms:DescribeKey
Resource: '*'
- Sid: Allow attachment of persistent resources
Effect: Allow
Principal:
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS"
Action:
- kms:CreateGrant
- kms:ListGrants
- kms:RevokeGrant
Resource: '*'
Condition:
Bool:
kms:GrantIsForAWSResource: "true"
关于amazon-web-services - CloudFormation 拒绝以最小权限创建 AWS::KMS::Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68673068/
我的 aws 帐户位于 us-west-2 区域。并且在该账户中创建的 KMS key 具有 ARN arn:aws:kms:us-east-1::key/。在我的节点模块中,我使用 Credstas
当encrypting symmetrically使用 Google Cloud 的 KMS,Google Cloud automatically选择主键版本: Each symmetric encr
我需要使用客户端 key 加密一些文本字符串,然后使用与客户端加密相同的 key 在服务器端解密此加密字符串。 据我了解,AWS KMS 是建立在 AES 之上的。 那么我可以使用 CryptoJS
我已经创建了一个谷歌云项目并启用了 谷歌云 key 管理服务 (KMS) API。我创建了两个 key 圈。 keyring1位于us-east1,keyring2位于global。我创建了以下 ja
使用 Cloudformation 创建新的 KMS key 时,我在“状态原因”列中看到此消息: Did not have IAM permissions to process tags on AW
在阅读Cloudera KMS Installation procedure时,我发现 Cloudera strongly recommends not using Java Keystore KMS
Amazon Key Management Services 背后使用哪些算法或加密方法? 我搜索了它,但只找到了与配置相关的信息,而不是集成信息。 最佳答案 我会在这个答案的开头说,如果你真的感兴趣
我必须将.Net Core应用程序从Google App Engine移至Google Kubernetes Engine,因为我需要静态IP,可惜Google App Engine没有该选项。 我设
我使用 AWS SDK iOS v2.6.21 以编程方式将 KMS (SSE-KMS) 加密添加到 AWS S3 存储桶。我使用以下 Objective-C 代码执行此操作: AWSS3 *awsC
我正在寻求帮助,使用 KMS 在 Hive 中实现列级加密(与 https://issues.apache.org/jira/browse/HIVE-7934 完全相似)。虽然我清楚所引用 URL 中
我是 hadoop KMS 的新手,我已经使用 hadoop 启动了 KMS。现在我尝试运行这个 curl 命令 curl -i --header "Accept:application/json"
我不确定为什么我们需要这个 Hadoop KMS 正是为了?我浏览了 Apache Hadoop 的官方文档,并没有确切提到为什么我们需要这个概念。我唯一清楚的是,使用此 client 和 serve
我搜索了 Google 结果,这似乎是不可能的,所以:有人知道如何使用 KMS 在控制台中更改或设置特定的视频分辨率吗? 我没有使用任何图形服务器或图形子系统,所以这个问题只与控制台有关。 我使用的是
我正在尝试验证使用 Google 的云 KMS 生成的签名,但我不断收到无效响应。 这是我测试它的方式: const versionName = client.cryptoKeyVersionPath
我的问题可能听起来太明显了,但我是 Amazon KMS 的新手。在阅读了 AWS 上的大量文档后,我了解到,如果我直接使用 CMK 进行加密和解密,我可以直接通过创建加密和解密请求来完成。但我不清楚
我已经能够使用私钥签署云端 URL,但很难保证私钥的安全。我正在考虑使用 KMS 来保证私钥的安全,有没有办法使用存储在亚马逊 KMS 中的 key 对 URL 进行签名? 最佳答案 答案是否定的,C
给定一个定义了以下内容的 CloudFormation 模板: KMS key KMS key 别名 一个 S3 存储桶 如果由于某种原因我需要删除 CloudFormation 堆栈并重新部署,删除
这是一个新手安全/控制台问题......我在我的项目中在欧洲的一个特定(错误)位置创建了一个 key 环。 我在控制台中看不到任何编辑甚至删除 key 环的方法。 key 圈完全是空的……里面没有 k
如何使用 boto3 资源从 S3 存储桶读取 KMS 加密文件? 下面是我用来读取非加密文件的片段 - s3 = boto3.resource('s3') obj = s3.Object(bucke
我正在 AWS Lambda 上编写无服务器函数。 在某些情况下,我需要使用 kms:GenerateDataKey*权限。 这样做的目的究竟是什么。我检查了 AWS 文档,但它太神秘了。有人可以举一
我是一名优秀的程序员,十分优秀!