列出所有密钥时忽略 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 团队在默认密钥上修复了政策。