Amazon web services Kubernetes:外部机密运算符错误:InvalidClientTokenId:请求中包含的安全令牌无效

Amazon web services Kubernetes:外部机密运算符错误:InvalidClientTokenId:请求中包含的安全令牌无效,amazon-web-services,kubernetes,kubernetes-helm,minikube,aws-secrets-manager,Amazon Web Services,Kubernetes,Kubernetes Helm,Minikube,Aws Secrets Manager,我正在通过以下方式尝试外部机密运营商(ESO): 我使用minikube和AWS secrets manager来实现这一点(我也在托管在EC2中的k8s集群中进行了尝试,但我得到了相同的错误) 我遵循了上面链接中的步骤: 新增回购协议: 掌舵回购添加外部机密https://charts.external-secrets.io 在名称空间中安装它。我已经在名称空间中,所以我没有创建名称空间 掌舵安装外部机密外部机密/外部机密--设置installCRDs=true 增加了k8s的秘密: k创

我正在通过以下方式尝试外部机密运营商(ESO):

我使用minikube和AWS secrets manager来实现这一点(我也在托管在EC2中的k8s集群中进行了尝试,但我得到了相同的错误)

我遵循了上面链接中的步骤:

  • 新增回购协议:
  • 掌舵回购添加外部机密https://charts.external-secrets.io

  • 在名称空间中安装它。我已经在名称空间中,所以我没有创建名称空间
  • 掌舵安装外部机密外部机密/外部机密--设置installCRDs=true

  • 增加了k8s的秘密:
  • k创建机密通用aws凭据--从literal=aws访问密钥id='xxx'--从literal=aws机密访问密钥='xxx'

  • 我在AWS机密管理器中创建了一个名为test_user_1的机密
  • kubectl apply-f secret-store.yaml
  • kubectl apply-f externalsecrets.yaml
  • 然后它说

    externalsecret.external-secrets.io/example created

    当我这样做的时候

    kubectl描述externalsecret.externalSecrets.io/示例

    下面是我得到的,没有要创建的秘密:

    ...
    Status:
      Conditions:
        Last Transition Time:  2021-06-09T22:45:10Z
        Message:               could not get secret data from provider: key "test_user_1" from ExternalSecret "example": InvalidClientTokenId: The security token included in the request is invalid.
                               status code: 403, request id: 5a544aa0-3953-4c0d-9dab-37bde10e328b
        Reason:                SecretSyncedError
        Status:                False
        Type:                  Ready
      Refresh Time:            <nil>
    Events:                    <none>
    
    
    。。。
    地位:
    条件:
    最后转换时间:2021-06-09T22:45:10Z
    消息:无法从提供程序获取机密数据:密钥“test_user_1”来自ExternalSecret“example”:InvalidClientTokenId:请求中包含的安全令牌无效。
    状态代码:403,请求id:5a544aa0-3953-4c0d-9dab-37bde10e328b
    原因:分离同步错误
    状态:False
    类型:就绪
    刷新时间:
    活动:
    

    我知道这个角色可以访问aws机密管理器(我已经使用这个角色运行python脚本从我的笔记本电脑访问aws机密管理器)。但是,我对k8s的了解有限,因此,非常感谢您的帮助。

    我解决了这个问题。在AWS一侧。我需要创建一个新用户和一个新角色。将新创建的角色放在configmap的role:部分,并允许用户通过在k8s集群中为用户提供aws cred作为环境变量来承担该角色

    为新创建的角色放置此策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:GetResourcePolicy",
            "secretsmanager:GetSecretValue",
            "secretsmanager:DescribeSecret",
            "secretsmanager:ListSecretVersionIds"
          ],
          "Resource": [
            "arn:aws:secretsmanager:us-west-2:111122223333:secret:dev-*",
          ]
        }
      ]
    }
    
    以下为角色的信任关系:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::..."
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
    新创建用户的以下策略:

    {
        "Version": "2012-10-17",
        "Statement": {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::...."
        }
    }
    
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::..."
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
    {
        "Version": "2012-10-17",
        "Statement": {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::...."
        }
    }