Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Strategi yang betul untuk mendapatkan rahsia pada aplikasi go tempatan

Strategi yang betul untuk mendapatkan rahsia pada aplikasi go tempatan

WBOY
WBOYke hadapan
2024-02-08 22:42:081128semak imbas

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

editor php Banana membawakan anda artikel tentang strategi yang betul untuk mendapatkan rahsia dalam aplikasi Go tempatan. Dalam pembangunan aplikasi moden, melindungi keselamatan maklumat sensitif adalah penting. Artikel ini akan berkongsi beberapa strategi berkesan untuk membantu pembangun mendapatkan dan menggunakan maklumat sulit dengan betul dalam aplikasi Go asli untuk memastikan kerahsiaan dan integriti data. Sama ada kata laluan pangkalan data, kunci API atau maklumat sensitif lain, pengendalian dan storan yang betul adalah kunci untuk memastikan aplikasi anda selamat. Mari selami cara mengendalikan maklumat sulit dengan selamat!

Kandungan soalan

Memainkan projek kecil pada aws:

  • aplikasi golang
  • rds/mysql pangkalan data
  • Pengurus Rahsia
  • pintu masuk api dan lambda

Saya menjalankan apl go secara setempat untuk mengesahkan interaksi dengan pangkalan data, tetapi saya tidak dapat membuatnya berfungsi dengan pengurus rahsia.

Gunakan kod contoh ini:

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)
}

Saya faham

operation error secrets manager: getsecretvalue, exceeded maximum number of attempts, 3, failed to sign request: failed to retrieve credentials: failed to refresh cached credentials, no ec2 imds role found, operation error ec2imds

Jika saya faham dengan betul, saya perlu menambah kebenaran pada pengguna/dasar. Tetapi di mana untuk menambah ini? Dalam konsol iam? Atau konsol pengurus rahsia?

Apa yang sepatutnya?

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Principal": {"AWS": "<what to add here>"},
            "Resource": "<and here>"
        }
    ]
}

Penyelesaian

aplikasi go tidak dapat mencari kelayakan untuk menggunakan aws api.

Mengikut (Konfigurasi Bukti Kelayakan) anda boleh menggunakan kod ini untuk menggunakan secara automatik ~/.aws/config sebagai bukti kelayakan tempatan

sess := session.must(session.newsessionwithoptions(session.options{
    sharedconfigstate: session.sharedconfigenable,
}))

Jika anda menyediakan konfigurasi tersuai, anda mesti memberikan bukti kelayakan. Terdapat kaedah lain, pilih yang sesuai untuk anda. aws mencadangkan kaedah di atas.

Ini termasuk berjalan dengan pengguna anda. Untuk pelaksanaan aws anda perlu memberikan fungsi lambda akses kepada kunci:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes128-1a2b3c"
            ]
        }
}

Strategi di atas mesti digunakan pada peranan iam yang digunakan untuk melaksanakan lambda. Anda boleh mencari konsol aws -> lambda anda ->

Atas ialah kandungan terperinci Strategi yang betul untuk mendapatkan rahsia pada aplikasi go tempatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam