0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microserviceの環境変数にAWS Secrets Managerのシークレット情報を設定する方法

Posted at

Microserviceの環境変数にAWS Secrets Managerのシークレット情報を設定する方法

はじめに

Microserviceアーキテクチャでは、各サービスが独自の環境変数を持つことが一般的です。これらの環境変数には、APIキーやデータベースの認証情報などの機密情報が含まれることがあります。AWS Secrets Managerを使用して、これらの機密情報を安全に管理し、環境変数として設定する方法を解説します。

手順

1. AWS Secrets Managerでシークレットを作成

まず、AWS Secrets Managerでシークレットを作成します。

  1. AWSコンソールにログインし、Secrets Managerに移動します。
  2. 「シークレットの作成」をクリックします。
  3. 「その他のシークレットタイプ」を選択し、キーと値のペアを追加します。
  4. シークレットに分かりやすい名前を付けます(例:example-secret)。
  5. 「シークレットの作成」をクリックして完了します。

2. IAMロールの設定

次に、KubernetesがAWS Secrets ManagerにアクセスできるようにIAMロールを設定します。

  1. IAMコンソールに移動し、ポリシーを作成します。

  2. 以下のポリシーを使用して、Secrets Managerへのアクセスを許可します:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "secretsmanager:GetSecretValue",
          "Resource": "arn:aws:secretsmanager:<region>:<account-id>:secret:example-secret"
        }
      ]
    }
    
  3. IAMロールを作成し、上記のポリシーをアタッチします。

3. KubernetesにExternalSecretを設定

次に、KubernetesにExternalSecretリソースを設定します。

  1. ExternalSecretのマニフェストファイルを作成します:

    apiVersion: external-secrets.io/v1beta1
    kind: ExternalSecret
    metadata:
      name: example-external-secret
      namespace: default
    spec:
      refreshInterval: "15s"
      secretStoreRef:
        name: aws-secretsmanager
        kind: SecretStore
      target:
        name: example-secrets
      data:
        - secretKey: aws_s3_accesskeyid
          remoteRef:
            key: example-secret
            property: AWS_S3_AccessKeyId
    
  2. このマニフェストを適用して、ExternalSecretを作成します。

4. Deploymentで環境変数を設定

最後に、Deploymentで環境変数を設定します。

  1. Deploymentのマニフェストファイルを作成します:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: example-deployment
    spec:
      template:
        spec:
          containers:
            - name: example-container
              env:
                - name: FILE_AWSOSS_ACCESSKEYID
                  valueFrom:
                    secretKeyRef:
                      name: example-secrets
                      key: aws_s3_accesskeyid
    
  2. このマニフェストを適用して、Deploymentを作成します。

5. GitLab CI/CDパイプラインの設定

GitLab CI/CDを使用して、デプロイメントを自動化します。

  1. .gitlab-ci.ymlファイルを作成し、以下の内容を追加します:

    stages:
      - deploy
    
    deploy:
      stage: deploy
      script:
        - kubectl apply -f external-secret.yaml
        - kubectl apply -f deployment.yaml
      only:
        - main
    
  2. external-secret.yamldeployment.yamlファイルをリポジトリに追加し、GitLabにプッシュします。

ExternalSecretの自動生成機能

External Secrets Operatorは、外部のシークレット管理システム(例えば、AWS Secrets Manager)から情報を取得し、自動的にKubernetesのSecretリソースとして注入する機能を持っています。これにより、ExternalSecretが適切に設定されていれば、SecretStoreSecretリソースを手動で作成する必要はなく、External Secrets Operatorがこれらのリソースを自動的に管理してくれます。

まとめ

以上の手順により、AWS Secrets Managerからシークレットを取得し、Microserviceの環境変数として設定することができます。これにより、機密情報を安全に管理し、アプリケーションのセキュリティを向上させることができます。

参考

1: External Secrets Operator Documentation

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?