ホームページ  >  記事  >  バックエンド開発  >  ローカル go アプリケーションでシークレットを取得するための正しい戦略

ローカル go アプリケーションでシークレットを取得するための正しい戦略

WBOY
WBOY転載
2024-02-08 22:42:081100ブラウズ

在本地 go 应用程序上获取机密的正确策略

php エディター Banana は、ローカル Go アプリケーションのシークレットを取得するための正しい戦略に関する記事をお届けします。最新のアプリケーション開発では、機密情報のセキュリティを保護することが非常に重要です。この記事では、開発者がネイティブ Go アプリケーションで機密情報を正しく取得して使用し、データの機密性と整合性を確保するのに役立ついくつかの効果的な戦略を紹介します。データベースのパスワード、API キー、その他の機密情報のいずれであっても、適切な処理と保管がアプリケーションの安全性を保つ鍵となります。機密情報を安全に扱う方法を見てみましょう。

質問内容

AWS で小さなプロジェクトをプレイする:

  • golang アプリケーション
  • rds/mysql データベース
  • シークレットマネージャー
  • APIゲートウェイとラムダ

データベースとのやり取りを確認するために go アプリケーションをローカルで実行していますが、シークレット マネージャーと連携させることができません。

このサンプル コードを使用します:

リーリー ###わかりました### リーリー

私の理解が正しければ、ユーザー/ポリシーにアクセス許可を追加する必要があります。しかし、これをどこに追加するのでしょうか? IAM コンソールで?それともシークレットマネージャーコンソールでしょうか?

それはどうあるべきですか?

func getcreds() {
    config, err := config.loaddefaultconfig(context.todo(), config.withregion(region))
    if err != nil {
        log.fatal(err)
    }

    svc := secretsmanager.newfromconfig(config)
    input := &secretsmanager.getsecretvalueinput{
        secretid:     aws.string(secretname),
        versionstage: aws.string("awscurrent"),
    }

    result, err := svc.getsecretvalue(context.todo(), input)
    if err != nil {
        log.fatal(err.error())
    }

    var secretstring string = *result.secretstring
    log.printf("pwd: %s", secretstring)
}

回避策

go アプリケーションは、aws API を使用するための認証情報を見つけることができません。

(Configuration Credentials)

によると、このコードを使用すると、~/.aws/config をローカル認証情報として自動的に使用できます。 リーリー カスタム構成を指定する場合は、資格情報を指定する必要があります。他にも方法がありますので、自分に合った方法を選択してください。 aws は上記の方法を提案しました

.

これには、ユーザーと一緒に実行することも含まれます。 aws を実行するには、ラムダ関数にキーへのアクセスを許可する必要があります: リーリー

上記のポリシーは、ラムダの実行に使用される iam ロールに適用する必要があります。ロールは、AWS コンソール -> ラムダ -> ラムダ -> 設定 -> 権限 -> 実行ロール

で見つかります。

以上がローカル go アプリケーションでシークレットを取得するための正しい戦略の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。