gpt4 book ai didi

amazon-web-services - Kubernetes:外部 secret 运算符(operator)错误:InvalidClientTokenId:请求中包含的安全 token 无效

转载 作者:行者123 更新时间:2023-12-04 07:31:25 24 4
gpt4 key购买 nike

我正在通过以下方式尝试外部 secret 运算符(operator) (ESO):

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

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

我正在使用 minikube 和 AWS secrets manager 来执行此操作(我也在 E​​C2 中托管的 k8s 集群中进行了尝试,但我得到了完全相同的错误)。

我按照上面链接中的步骤操作:

  1. 添加 repo :

helm repo 添加外部 secret https://charts.external-secrets.io

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

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

  1. 添加了 k8s secret :

k 创建 secret 通用 aws-credentials --from-literal=aws-access-key-id='xxx' --from-literal=aws-secret-access-key='xxx'

  1. 我在 AWS secret 管理器中创建了一个名为 test_user_1 的 secret
  2. kubectl apply -f secret-store.yaml
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
  1. kubectl apply -f externalsecrets.yaml
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/示例已创建

当我这样做

kubectl describe externalsecret.external-secrets.io/example

下面是我得到的,没有创建secret-to-be-created:

...
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 secrets manager(我已经运行 python 脚本来使用这个角色从我的笔记本电脑访问 aws secrets manager)。但是,我对 k8s 的了解有限,所以,我很感激任何帮助。

最佳答案

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

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

{
"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::...."
}
}

关于amazon-web-services - Kubernetes:外部 secret 运算符(operator)错误:InvalidClientTokenId:请求中包含的安全 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67912695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com