首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部机密操作符错误: InvalidClientTokenId:请求中包含的安全令牌无效

外部机密操作符错误: InvalidClientTokenId:请求中包含的安全令牌无效
EN

Stack Overflow用户
提问于 2021-06-09 23:07:23
回答 1查看 3.4K关注 0票数 3

我现正尝试执行以下的对外机密操作程序:

https://github.com/external-secrets/external-secrets

https://external-secrets.io/guides-getting-started/

我正在使用minikube和AWS秘密管理器来完成这个任务(我也在托管在k8s集群中的EC2中进行了尝试,但我得到了相同的错误)。

我遵循上述链接中的步骤:

  1. 添加了回购:

helm repo add external-secrets https://charts.external-secrets.io

  1. 将其安装在命名空间中。我已经在名称空间中了,所以我没有创建名称空间。

helm install external-secrets external-secrets/external-secrets --set installCRDs=true

  1. 添加了k8s秘密:

k create secret generic aws-credentials --from-literal=aws-access-key-id='xxx' --from-literal=aws-secret-access-key='xxx'

我在AWS秘密管理器中创建了一个名为test_user_1

  • kubectl apply -f secret-store.yaml

的秘密

代码语言:javascript
复制
kind: SecretStore
metadata:
  name: secretstore-sample
spec:
  provider:
    aws:
      service: SecretsManager
      role: arn:aws:iam::123456789012:role/somerole
      region: us-east-1
      auth:
        secretRef:
          accessKeyIDSecretRef:
            name: aws-credentials
            key: aws-access-key-id
          secretAccessKeySecretRef:
            name: aws-credentials
            key: aws-secret-access-key

externalsecrets.yaml

  1. kubectl

代码语言:javascript
复制
apiVersion: external-secrets.io/v1alpha1
kind: ExternalSecret
metadata:
  name: example
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: secretstore-sample
    kind: SecretStore
  target:
    name: secret-to-be-created
    creationPolicy: Owner
  data:
    - secretKey: user-1-username
      remoteRef:
        key: test_user_1
        property: username
    - secretKey: user-1-password
      remoteRef:
        key: test_user_1
        property: password

然后上面写着

externalsecret.external-secrets.io/example created

当我这么做

kubectl describe externalsecret.external-secrets.io/example

下面是我得到的,没有创造出任何秘密:

代码语言:javascript
复制
...
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>

我知道这个角色可以访问aws机密管理器(我使用这个角色运行python脚本来访问我的笔记本电脑中的aws机密管理器)。但是,我对k8s知之甚少,所以,我很感激任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-06-11 15:40:23

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

将此策略用于新创建的角色:

代码语言:javascript
复制
{
  "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-*",
      ]
    }
  ]
}

下面作为信任关系的角色:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::..."
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

以下是新创建的用户的策略:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::...."
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67912695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档