何をカバーしますか?
このガイドでは、「IAM Passrole」権限の使用方法について説明します。 具体例として、passrole パーミッションを使用して EC2 インスタンスを S3 バケットに接続する方法を見ていきます。
重要な用語と概念
AWS サービスロール: ユーザーまたはアカウント所有者に代わってタスクを実行できるように、サービスが引き受ける役割です。
EC2 インスタンスの AWS サービス ロール: Amazon EC2 インスタンスで実行されているアプリケーションが、このロールで許可されているユーザー アカウントでタスクを実行するために引き受けるロールです。
AWS サービスにリンクされたロール: RDS DB を起動するための RDS サービスにリンクされたロールのように、事前に定義され、AWS サービスに直接アタッチされるロールです。
Passrole 権限を使用して EC2 インスタンスを S3 に接続する
多くの AWS サービスは設定のためのロールを必要とし、このロールはユーザーによって渡され、管理されます。 このようにして、サービスは役割を引き受け/引き受け、ユーザーに代わってタスクを実行します。 ほとんどのサービスでは、そのサービスを構成するときにロールを 1 回渡す必要があります。 ユーザーには、ロールを AWS サービスに渡すためのアクセス許可が必要です。 管理者はどのユーザーがサービスにロールを渡すことができるかを制御できるため、これはセキュリティの観点からは良いことです。 「PassRole」アクセス許可は、ロールを AWS サービスに渡すために、IAM ユーザー、ロール、またはグループにユーザーによって付与されます。
前の概念を詳しく説明するために、EC2 インスタンスで実行されているアプリケーションが S3 バケットへのアクセスを必要とする場合を考えてみましょう。 このために、このインスタンスに IAM ロールをアタッチして、このアプリケーションがロールで定義された S3 権限を取得できるようにします。 このアプリケーションには、認証と承認のために一時的な資格情報が必要です。 アプリケーションを実行しているインスタンスにロールが関連付けられると、EC2 は一時的なセキュリティ資格情報を取得します。 これらの資格情報は、S3 にアクセスするためにアプリケーションで使用できるようになります。
インスタンスの起動時に EC2 サービスにロールを渡す機能を IAM ユーザーに付与するには、次の 3 つのものが必要です。
- ロールのスコープを決定するロールの IAM アクセス許可ポリシー。
- EC2 がロールを引き受け、ロール内で定義されたアクセス許可を使用できるようにする、ロールにアタッチされた信頼ポリシー。
- 渡すことができるロールをリストする IAM ユーザーの IAM アクセス許可ポリシー。
もっと現実的な方法でやってみましょう。 権限が制限された IAM ユーザーがいます。 次に、EC2 インスタンスを起動するインライン ポリシーと、IAM ロールをサービスに渡すアクセス許可をアタッチします。 次に、S3 アクセス用のロールを作成します。 「S3Access」としましょう。 そしてそれに IAM ポリシーをアタッチします。 このロールでは、AWS が管理する「AmazonS3ReadOnlyAccess」ポリシーを使用して S3 データの読み取りのみを許可します。
役割を作成する手順
ステップ 1. 管理者 (ルート) の IAM コンソールから、[ロール]をクリックし、[ロールの作成]を選択します。
ステップ 2.[信頼されたエンティティの選択]ページで、[信頼されたエンティティ タイプ]の下の[AWS サービス]を選択します。
ステップ 3. 「ユース ケース」の下で、「他の AWS サービスのユース ケース」の「EC2」に対応するラジオ ボタンを選択します。
ステップ 4. 次のページで、「AmazonS3ReadOnlyAccess」ポリシーを割り当てます。
ステップ 5. ロールに名前を付けます (この場合は「S3Access」)。 このロールの説明を追加します。 この役割を使用して、次の信頼ポリシーが自動的に作成されます。
{
“バージョン”: “2012-10-17”、
“声明”: [
{
“Effect”: “Allow”,
“Action”: [
“sts:AssumeRole”
]、
“主要”: {
“サービス”: [
“ec2.amazonaws.com”
]
}
}
]
}
ステップ 6.「ロールの作成」をクリックしてロールを作成します。
ユーザーの IAM ポリシー
このポリシーは、IAM ユーザーに完全な EC2 アクセス許可と、「S3Access」ロールをインスタンスに関連付けるアクセス許可を付与します。
ステップ 1. IAM コンソールから、[ポリシー]をクリックし、[ポリシーの作成]をクリックします。
ステップ 2. 新しいページで、json タブを選択し、次のコードを貼り付けます。
{
“バージョン”: “2012-10-17”、
“声明”: [{
“Effect”:“Allow”,
“Action”:[“ec2:*”]、
“リソース”:「*」
}、
{
“効果”:“許可する”、
“アクション”:「iam:PassRole」、
“リソース”:「arn:aws:iam::Account_ID:role/S3Access」
}]
}
太字のテキスト「アカウントID」をユーザー アカウント ID に置き換えます。
ステップ 3. (オプション) ポリシーにタグを付けます。
ステップ 4. ポリシーに適切な名前 (この場合は「IAM-User-Policy」) を付け、[ポリシーの作成]ボタンをクリックして、このポリシーを IAM ユーザーにアタッチします。
「S3Access」ロールを EC2 インスタンスにアタッチする
次に、このロールをインスタンスにアタッチします。 EC2 コンソールからインスタンスを選択し、[アクション]>[セキュリティ]>[IAM ロールの変更]に移動します。 新しいページで、ドロップダウン メニューから「S3Access」ロールを選択して保存します。
セットアップの確認
ここで、EC2 インスタンスが管理者によって作成された S3 バケットにアクセスできるかどうかを確認します。 EC2 インスタンスにログインし、AWS CLI アプリケーションをインストールします。 次に、この EC2 インスタンスで次のコマンドを実行します。
再度、ローカル マシンで構成された IAM アカウントから前のコマンドを実行します。 EC2 インスタンスではコマンドが正常に実行されますが、ローカル マシンでは「アクセスが拒否されました」というエラーが表示されます。
EC2 インスタンスの S3 アクセス許可のみを付与し、IAM ユーザーや他の AWS サービスには付与していないため、エラーは明らかです。 注意すべきもう 1 つの重要な点は、バケットとそのオブジェクトを公開していないことです。
結論
このガイドでは、AWS で PassRole アクセス許可を使用する方法を示しました。 EC2 を S3 に接続することに成功しました。 IAM ユーザーに最小限の権限を付与することに関心がある場合、これは非常に重要な概念です。
The post AWS IAM PassRole アクセス許可の使用方法 appeared first on Gamingsym Japan.