列出所有密钥时忽略 AWS Managed/Default KMS 密钥?
Ignoring AWS Managed/Default KMS Keys When Listing All Keys?
我写了下面的函数:
private List<KeyListEntry> getKeyListEntries(AWSKMS kms)
{
ListKeysRequest listKeysRequest = new ListKeysRequest();
List<KeyListEntry> kmsKeys = new ArrayList<>();
boolean moreKeys = false;
do
{
ListKeysResult listKeysResult = kms.listKeys(listKeysRequest);
kmsKeys.addAll(listKeysResult.getKeys());
moreKeys = listKeysResult.getNextMarker() != null && !listKeysResult.getNextMarker().equals("");
listKeysRequest.setMarker(listKeysResult.getNextMarker());
} while (moreKeys);
return kmsKeys;
}
它构建了我帐户中所有 KMS 密钥的列表。 'moreKeys' 标志用于处理响应的分页。在这个列表的其他地方,我打电话给:
kms.listResourceTags
这样我就可以确定每个键上的标签并相应地执行操作。我的问题是,对于 ACM 等,我通常会在某些时候点击默认的主密钥。
默认密钥的这些策略不允许 root 帐户执行 kms:ListResourceTags
,我无法修改它们来更改它。我在构建列表时是否有一种简单的方法可以过滤掉,以便我可以忽略任何 AWS 默认 KMS 密钥?
这最终成为亚马逊的一个错误!我提出了一个案例,ACM 团队在默认密钥上修复了政策。
我写了下面的函数:
private List<KeyListEntry> getKeyListEntries(AWSKMS kms)
{
ListKeysRequest listKeysRequest = new ListKeysRequest();
List<KeyListEntry> kmsKeys = new ArrayList<>();
boolean moreKeys = false;
do
{
ListKeysResult listKeysResult = kms.listKeys(listKeysRequest);
kmsKeys.addAll(listKeysResult.getKeys());
moreKeys = listKeysResult.getNextMarker() != null && !listKeysResult.getNextMarker().equals("");
listKeysRequest.setMarker(listKeysResult.getNextMarker());
} while (moreKeys);
return kmsKeys;
}
它构建了我帐户中所有 KMS 密钥的列表。 'moreKeys' 标志用于处理响应的分页。在这个列表的其他地方,我打电话给:
kms.listResourceTags
这样我就可以确定每个键上的标签并相应地执行操作。我的问题是,对于 ACM 等,我通常会在某些时候点击默认的主密钥。
默认密钥的这些策略不允许 root 帐户执行 kms:ListResourceTags
,我无法修改它们来更改它。我在构建列表时是否有一种简单的方法可以过滤掉,以便我可以忽略任何 AWS 默认 KMS 密钥?
这最终成为亚马逊的一个错误!我提出了一个案例,ACM 团队在默认密钥上修复了政策。