ユースカジノ 昇格ボーナス のセキュリティ強化④ ~ Secret Manager編 ~
投稿日: 2024/03/11
はじめに
こんにちは、高橋です。
久しぶりの「簡単にできるユースカジノ 昇格ボーナスのセキュリティ強化」シリーズとして、ユースカジノ 昇格ボーナス Secrets Managerについてご紹介したいと思います。なぜこの機能かと言われれば、私が今年ユースカジノ 昇格ボーナス Certified Solutions Architect – Professionalとユースカジノ 昇格ボーナス Certified Security - Specialty の2つの認定資格を受験したのですが、その両方で重要なサービスとして出てきため、その勉強結果と有用性を皆様に共有したかったからです。
1.ユースカジノ 昇格ボーナス Secrets Managerとは?
ユースカジノ 昇格ボーナス Secrets Managerはパスワード等の機密性の高い情報(以下シークレット)を安全に保管、共有することができる機能です。例えばデータベース認証のパスワードは、複数の関係者やアプリケーションが共通で使用するケースがあると思いますが、これまでこういった場合はデータベースにアクセスするサーバのローカルにファイルに保存して共有したり、アプリケーション内にパスワードを書きこんでいたと思いますが、そうすると本来閲覧不要な人にまでアクセス可能だったり、GitHubでソースの保存ができなかったり、変更したくてもデータベースにアクセスする全てのユーザ、アプリケーションで保存しているパスワードを変更しなければならないため、ついつい初期からパスワードが変更できず、セキュリティ的に高いリスクを負うことになってしまっていました。ユースカジノ 昇格ボーナス Secrets Managerを使用すれば、安全にパスワードの保存・共有することは勿論、パスワードが外部で保存されているため、定期的な変更を行うことができるようなります。また、いつ、誰がパスワードを使用したかも分かるため、気密性の高い情報の管理にはうってつけのサービスと言えます。
2.ユースカジノ 昇格ボーナス Secret Managerの利用料金
ユースカジノ 昇格ボーナス Secret Manageは保存したシークレットの数と呼び出された回数に対して課金され、1シークレットごとに>87_word_end<.04、10000APIコール(呼び出し)毎に>87_word_end<.05(ともに2024/2時点の料金)と非常に安価に利用することが可能です。
3.アクセス方法
ユースカジノ 昇格ボーナス Secret Managerに保存されているシークレットには以下の方法でアクセスすることが可能です。
利用者 | アクセス方法 |
---|---|
人 | ユースカジノ 昇格ボーナスコンソール |
コマンドライン | ユースカジノ 昇格ボーナス CLI |
ユースカジノ 昇格ボーナス SDK | Java, Python, .NET, Go, Java script, PHP, Ruby, C# |
ユースカジノ 昇格ボーナスサービス (直接的にアクセス) |
ユースカジノ 昇格ボーナス Batch, ユースカジノ 昇格ボーナス CloudFormation, Amazon ECS, Amazon EKS, ユースカジノ 昇格ボーナス IoT Greengrass, ユースカジノ 昇格ボーナス Lambda |
具体的な利用イメージは主に以下の様にプログラムがユースカジノ 昇格ボーナス SDKを用いてユースカジノ 昇格ボーナス Secret Managerから認証情報を取得して、取得した情報を元にデータベース等にアクセスする形となります。

4.ユースカジノ 昇格ボーナスの保護
ユースカジノ 昇格ボーナス Secret Manager内のシークレットを保護する機能としては主に以下のものがあります。
- ① アクセス制御
- ② 暗号化
- ③ ローテーション
- ④ レプリケーション
アクセス制御は他のサービスと同様にIAMで行われます。実際にプログラムからアクセスする場合はIAMロールを作成しておき、STSで一時認証を引き受けてアクセスするのが通常のやり方になります。
次にシークレットをユースカジノ 昇格ボーナス Secret Managerに保存する際にユースカジノ 昇格ボーナス KMSで暗号化することができます。これによりユースカジノ 昇格ボーナス KMSにアクセス権のないユーザからシークレットを保護することができます。また、この観点から利用者を限定するためにシークレット単位でKMS内の暗号化キーを分けることが推奨いたします。
また、作成時にスケジュールを組んでAmazon RDSやRedShiftの認証情報を変更することもできるため、定期的にパスワードを変更することでデータベースのユースカジノ 昇格ボーナスを向上されることもできます。
さらに、作成時にユースカジノ 昇格ボーナスのレプリケーション設定を行うことができるため、データベースのレプリケーションとセットで設定しておくことで、災害対策にも対応することができます。
5.ユースカジノ 昇格ボーナスの作成から使用まで
ここからはユースカジノ 昇格ボーナス Secret Managerでシークレットの保管から実際の利用まで見てみたいと思います。
ユースカジノ 昇格ボーナス Secret Managerのコンソール画面で「新しいシークレットを保存する」をクリックすると下記の設定画面が開きます。
最初の画面ではどんなタイプのもののユースカジノ 昇格ボーナスかとその値、暗号化する場合の暗号化キーを選択します。ここではRDSの認証情報を設定していますが、この場合ログインユーザを入力し、対象のDBインスタンスを選択することになります。

次のページではこのユースカジノ 昇格ボーナスの名前と他アカウントからのアクセス許可、レプリケーション設定を行えます。レプリケーションは任意のリージョンを指定することができます。

次に自動ローテーションの設定を行います。自動ローテーションをする場合、その頻度とそれを実行するlambda関数の作成の有無を指定することができます。ローテーション戦略で交代ユーザを選択した場合、ユーザのクローンが作成され、以降2つのユーザのシークレットを交互に変更することによって、1つのユーザ側のシークレットが更新中でももう1つのユーザのシークレットは変更されていないため、ユースカジノ 昇格ボーナス Manager内に必ずアクセス可能な認証情報があるため、データベースへの短時間でも接続エラーの許されない環境で有効な方法となります。

最後のページにこのユースカジノ 昇格ボーナスへアクセスするためのサンプルコードが言語ごとに表示されるので、メモをして使用します。なお、サンプルコードはユースカジノ 昇格ボーナスの概要画面でも確認することができます。

続いて実際のユースカジノ 昇格ボーナスが保存され、値が取得できるか試してみます。人が取得するのであれば、コンソールから確認可能で、対象のユースカジノ 昇格ボーナス画面で「ユースカジノ 昇格ボーナスの値を取得する」をクリックすると、その情報が表示されます。


また、CLIからも簡単に取得して利用することが可能です。
[ec2-user@ip-192-168-0-11 ~]$ ユースカジノ 昇格ボーナス secretsmanager get-secret-value --secret-id test01
{
"Name": "test01",
"VersionId": "5eda0d4e-f781-411f-934c-e72deac20a73",
"SecretString": "{¥"username¥":¥"dbadmin¥",¥"password¥":¥"test123!¥",¥"engine¥":¥"postgres¥",¥"host¥":¥"testdb-1.cluster-ce5kwjzerty9.ap-northeast-1.rds.amazonユースカジノ 昇格ボーナス.com¥",¥"port¥":5432,¥"dbClusterIdentifier¥":¥"testdb-1¥"}",
"VersionStages": [
"ユースカジノ 昇格ボーナスCURRENT"
],
"CreatedDate": 1708750677.068,
"ARN": "arn:ユースカジノ 昇格ボーナス:secretsmanager:ap-northeast-1:111111111111:secret:test01-eyNhMR"
}
最後にサンプルコードを使ってLambdaからユーザIDとパスワードを取得してみたいと思います。サンプルコードは下記の通りでした。
# Use this code snippet in your app.
# If you need more information about configurations
# or implementing the sample code, visit the ユースカジノ 昇格ボーナス docs:
# https://ユースカジノ 昇格ボーナス.amazon.com/developer/language/python/
import boto3
from botocore.exceptions import ClientError
def get_secret():
secret_name = "test01"(シークレットの名前)
region_name = "ap-northeast-1"(シークレットが保存されているリージョン)
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
except ClientError as e:
# For a list of exceptions thrown, see
# https://docs.ユースカジノ 昇格ボーナス.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
raise e
secret = get_secret_value_response['SecretString']
# Your code goes here.
実際に値を取り出しているのは「ユースカジノ 昇格ボーナス = get_ユースカジノ 昇格ボーナス_value_response['ユースカジノ 昇格ボーナスString']」ですが、これはCLIの結果の「ユースカジノ 昇格ボーナスString」と同じで、ユーザIDとパスワードを個別に取り出せているわけではありません。また「ユースカジノ 昇格ボーナスString」の中身はdict型に見えますが、dict型で扱おうとしても扱えなかったので、一度astモジュールで整形する必要がありました。その結果、実際のコードは下記の様になりました。追加、変更したのは赤字の箇所です。
import boto3
from botocore.exceptions import ClientErrorimport ast
def lambda_handler(event, context):secret_name = "test01"
region_name = "ap-northeast-1"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=secret_name
)
except ClientError as e:
# For a list of exceptions thrown, see
# https://docs.ユースカジノ 昇格ボーナス.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
raise e
secret = get_secret_value_response['SecretString']ユースカジノ 昇格ボーナス_string = ast.literal_eval(ユースカジノ 昇格ボーナス)
name = ユースカジノ 昇格ボーナス_string['username']
password = ユースカジノ 昇格ボーナス_string['password']
print(name)
print(password)
実行してみると下記の様に、ユーザIDとパスワードが無事取得できました。

6.さいごに
今回はユースカジノ 昇格ボーナス環境のセキュリティ強化の第4弾としてユースカジノ 昇格ボーナス Secret Managerについてご紹介しました。これまでのユースカジノ 昇格ボーナス環境自体のセキュリティ強化とは異なり、所謂パスワード管理の強化の内容となりますが、セキュリティ事故の多くは杜撰なパスワード管理に起因しています。ユースカジノ 昇格ボーナス Secret Managerを使用すればパスワード管理を一元化し、必要な人・アプリケーションのみに利用を限定することができ、さらには人の手を介さず簡単にパスワードを定期的に更新することも可能となるため、利用しているパスワードのセキュリティを大幅に強化することが可能となります。もしまだ利用していない方がいらっしゃったら、是非ユースカジノ 昇格ボーナス Secret Managerの利用を検討してみてください。
ユースカジノ 昇格ボーナスは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。