LoginSignup
0
0

More than 1 year has passed since last update.

AzureAppServiceにおけるDBパスワードの管理(Docker+Go)

Posted at

AppServieでアプリを動かす場合にDBのパスワードやトークンなど公開すべきでない情報はKeyVaultに文字列を登録してAppServiceからのみ参照できるように制御するのが推奨されているように思います。テスト用アプリで動かしたので備忘録として残しておきます。

やりたいこと

・パスワードなどの文字列はKeyVaultで管理する
・アプリケーションはAppServiceで動かしアプリケーション設定経由で文字列を渡す
・Goの標準パッケージのosから環境変数として取得する

AppServiceでDockerを動かす

Goのプログラム

main.go
import (
	"fmt"
	"net/http"
	"os"
)
func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":80", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, World."+os.Getenv("password"))
}

DockerFile

Dockerfile
FROM golang:1.20

WORKDIR /usr/src/app
COPY go.mod go.sum ./
RUN go mod download && go mod verify

COPY *.go ./
RUN go build -v -o /app
EXPOSE 80

CMD ["/app"]

AppServiceのオブジェクトID(プリンシパル)取得

IDからオブジェクトIDをコピーする
image.png

KeyVault側に参照権限を付与する

アクセスポリシーにオブジェクトIDを入れてポリシー追加する
image.png

KeyVaultのシークレット識別子をコピーする

シークレットの識別子(https://〜)をコピーする
image.png

AppServiceのアプリケーション設定に追加する

以下の文字列を追加する
@Microsoft.KeyVault(SecretUri=<シークレット識別子)

image.png

結果の確認

KeyVaultに設定した文字列を確認する
image.png

一連の流れで文字列の追加とAppServiceからの参照を試しました。

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