KMS:decrypt
。检索机密值
>>>知道为什么吗?
技术细节:
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Parameters:
SecretValue:
Type: String
KmsCmkId:
Type: String
Resources:
MySecret:
Type: AWS::SecretsManager::Secret
Properties:
SecretString:
Ref: SecretValue
KmsKeyId: !Ref KmsCmkId
sam build ; sam deploy --guided --parameter-overrides SecretValue=ABC KmsCmkId=REDACTED
我确认单击AWS SecretsManager控制台中的Retrieve Secret Value
按钮确实执行了带有SecretsManager:getSecretValue
的API调用。
AWS说,SecretsManager:getSecretValue
只有在调用方在用于加密秘密的CMK上也有kms:decrypt
的情况下才会起作用(这是有道理的)。(请参阅https://docs.aws.amazon.com/secretsmanager/latest/apireference/api_getsecretvalue.html)
我确认我的对称KMS CMK确实是被用来加密秘密的CMK。
注意:注意不要将kms:get*
操作与secretsmanager:get*
操作混淆。
以下是我的KMS CMK策略:
{
"Id": "key-consolepolicy-3",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::REDACTED:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::REDACTED:user/MY_COWORKER"
]
},
"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": "arn:aws:iam::REDACTED:user/ME"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
},
{
"Sid": "Allow attachment of persistent resources",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::REDACTED:user/ME"
},
"Action": [
"kms:CreateGrant",
"kms:ListGrants",
"kms:RevokeGrant"
],
"Resource": "*",
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": "true"
}
}
}
]
}
非常感谢@JohnRotenstein,他给我指明了正确的方向,并回答了我的问题,如上图所示!
我刚发现下面的答案有问题。我正在调查和修复。我会更新我的答案在这里,当它是固定的。请忽略下面的答案,直到我修复它并删除此警告消息。
正如John所问的,当我在上面说我的同事在我们的帐户上“是管理员”时,我的意思是他的IAM用户帐户具有AWS托管策略管理员访问
(据我所知),该策略给予AWS(包括KMS!!)中的所有内容或几乎所有内容的“完全访问”。
json prettyprint-override">{
"Sid": "Deny use of the key (such as to encrypt and decrypt) for everyone",
"Effect": "Deny",
"Principal": "*",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"Resource": "*"
},
我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。
如何在不使用Azure函数属性的情况下检索Azure函数中的“秘密值”? null 我有一个应用程序,它在Azure KeyVault中秘密地存储了密钥/值对。在存储数据时,我保留标识符以备以后检索: 存储该值的代码为:
我想授予服务帐户访问Google Secrets Manager中的秘密的权限。 我可以像这样获得这个秘密: 但是当我的服务号尝试相同的命令时,gCloud会发出以下错误: 错误:(gcloud.beta.secrets.versions.access)权限被拒绝:请求的身份验证范围不足。 主要问题是:我还需要做些什么来确保服务帐户可以访问该机密? 我已授予该服务帐户“roles/secretma
我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to
我有一个相当标准的应用程序写在Java它也运行查询对数据库。应用程序位于GCP上,数据库位于Atlas上。 出于可以理解的原因,我不想在代码中保留数据库的用户名和密码。 所以我想到的选项1是将用户名和密码作为环境变量传递给GCP中的应用程序容器。 选项2是在GCP中使用秘密管理器,并将我的用户名和密码存储在那里,并将GCP凭据作为环境变量传递给GCP中的应用程序容器。 我的问题是,如果2号选项有附
我正在尝试使用运行python3(kivy)的独立应用程序检索AWS Secret(boto3-config)。 客户端使用boto3,使用硬编码的凭据可以正常工作。 我试图在boto3中使用获取文件夹。 我已创建了一个联合身份池,并为其分配了访问机密管理器的策略: 我也使用通用Cognito角色做了同样的事情。(知道这不是问题所在,但我相信我们都在努力解决一些问题)。 给我错误的和它提供的那些我