1
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?

手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】 - 9日目: IAMロールとポリシーを設定してAWSアクセスを安全に

Posted at

はじめに

「手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】」9日目です。昨日はAmazon MSKの概要とそのメリットについて理解しました。AWS上でKafkaを運用することが、いかに効率的で安全な選択肢であるかを学んだと思います。

今日は、MSKクラスターを実際に構築するための最も重要なステップの一つ、AWSのIAMロールとポリシーの設定を行います。これにより、AWSリソースへのアクセスを安全に管理できるようになります。


1. なぜIAMロールが必要なのか?

AWSでは、すべてのリソースへのアクセスは厳格に管理する必要があります。もし、EC2インスタンスがS3バケットへのアクセス権を無制限に持っていたら、セキュリティリスクが非常に高くなります。

そこで登場するのが、IAM(Identity and Access Management) です。IAMは、誰がどのAWSリソースにアクセスできるかを制御するためのサービスです。今回のケースでは、EC2インスタンスからMSKクラスターにアクセスするために、IAMロールを使用します。

IAMロールを使う主な理由は以下の通りです。

  • 一時的な認証情報: EC2インスタンスにアクセスキー(aws_access_key_idaws_secret_access_key)を直接保存する必要がなくなります。これは、キーの漏洩リスクを大幅に減らします。
  • 最小権限の原則: 必要な権限だけを付与することで、セキュリティリスクを最小限に抑えられます。
  • 他のAWSサービスとの連携: ロールをEC2にアタッチすることで、そのEC2インスタンスが他のAWSサービス(例:MSK、S3、CloudWatch)に安全にアクセスできるようになります。

2. EC2からMSKにアクセスするためのIAMロールを作成する

それでは、実際にIAMロールを作成していきましょう。今回は、EC2インスタンスがMSKクラスターにアクセスし、S3にデータを保存するための権限を持つロールを作成します。

ステップ1:IAMコンソールを開く

AWSマネジメントコンソールにログインし、「IAM」と検索してサービスを開きます。左側のナビゲーションメニューから「ロール」を選択し、「ロールを作成」をクリックします。

ステップ2:信頼エンティティを選択

「信頼されたエンティティの種類を選択」で「AWSのサービス」を選び、ユースケースとして「EC2」を選択します。これは、このロールをEC2インスタンスに付与することを意味します。選択したら、「次へ」をクリックします。

ステップ3:アクセス許可を追加

このステップでは、ロールに付与する権限(ポリシー)を指定します。

  1. MSKへのアクセス権: 検索ボックスに「msk」と入力し、「AmazonMSKFullAccess」を選択します。これは、MSKクラスターの作成、管理、データの送受信を行うためのフルアクセス権限です。
  2. S3へのアクセス権: 検索ボックスに「s3」と入力し、「AmazonS3FullAccess」を選択します。これは、S3バケットにデータを保存するためのフルアクセス権限です。
  3. CloudWatchへのアクセス権: 運用を考慮し、KafkaのメトリクスをCloudWatchで監視するための権限も追加します。検索ボックスに「cloudwatch」と入力し、「CloudWatchFullAccess」を選択します。

適切なポリシーをすべて選択したら、「次へ」をクリックします。

ステップ4:ロールに名前を付けて作成

ロール名には、用途がわかるような名前を付けましょう。今回は「KafkaClientEC2Role」とします。必要に応じて説明文を追加し、「ロールを作成」をクリックします。

これで、MSK、S3、CloudWatchへのフルアクセス権限を持つIAMロールが作成されました。このロールをEC2インスタンスにアタッチすることで、EC2は安全にこれらのAWSリソースにアクセスできるようになります。


3. ロールとポリシーの考え方:最小権限の原則

今回、学習を簡単にするためにフルアクセス権限を付与しましたが、本番環境では最小権限の原則に従うことが非常に重要です。

例えば、EC2インスタンスがMSKからデータを読み取るだけであれば、「AmazonMSKFullAccess」ではなく、より限定的な権限を持つカスタムポリシーを作成すべきです。

権限 アクションの例
kafka:CreateTopic トピックの作成
kafka:ProduceData データの送信
kafka:ConsumeData データの受信
s3:PutObject S3へのファイルのアップロード

このように、必要なアクションのみを許可することで、万が一ロールが悪用されても被害を最小限に抑えることができます。


まとめと次回予告

今日は、AWS環境でのセキュリティの基盤となるIAMロールとポリシーの設定方法を学びました。このロールをEC2インスタンスにアタッチすることで、安全な環境でMSKクラスターを操作できるようになります。

明日は、いよいよAWS上でMSKクラスターを実際に作成してみましょう。

10日目: Amazon MSKクラスターを実際に作成してみよう

お楽しみに!

1
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
1
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?