Snow Family デバイスで IAM をローカルに使用 - AWS Snowball Edge 開発者ガイド

Snow Family デバイスで IAM をローカルに使用

AWS Identity and Access Management (IAM) により、AWS Snowball Edge デバイスで実行される AWS リソースへのアクセスを安全にコントロールできます。IAM により、誰を認証 (サインイン) し、誰にリソースの使用を承認する (アクセス許可を持たせる) かを制御します。

IAM は、デバイスでローカルにサポートされています。ローカル IAM サービスを使用して新しいユーザーを作成し、IAM ポリシーをアタッチできます。これらのポリシーを使用して、割り当てられたタスクの実行に必要なアクセスを許可できます。例えば、ユーザーにデータの転送を許可する一方で、新しい Amazon EC2 互換インスタンスの作成は制限することができます。

さらに、デバイスで AWS Security Token Service (AWS STS) を使用して、ローカルなセッションベースの認証情報を作成できます。IAM サービスの詳細については、IAM ユーザーガイド使用開始を参照してください。

デバイスのルート認証情報を無効にすることはできません。また、アカウント内のポリシーを使用して、AWS アカウント のルートユーザーへのアクセスを明示的に拒否することはできません。ルートユーザーのアクセスキーを保護し、デバイスを日常的に操作するための IAM ユーザー認証情報を作成することをお勧めします。

重要

このセクションのドキュメントは、AWS Snowball Edge デバイス上で IAM をローカルで使用する場合に適用されます。AWS クラウド での IAM の使用の詳細については、AWS Snowball におけるアイデンティティとアクセスの管理 を参照してください。

AWS のサービスを Snowball Edge 上で正しく動作させるには、サービスのポートを許可する必要があります。詳細については、「Snow Family デバイスの AWS のサービス用のポート要件」を参照してください。

Snowball Edge での AWS CLI および API オペレーションの使用

AWS CLI または API オペレーションを使用して、SnowballEdge で IAM、AWS STS、Amazon S3、および Amazon EC2 コマンドを入力する場合は、region を「snow」に指定する必要があります。次の例のように、aws configure を使用するか、コマンド自体の中でこれを行うことができます。

aws configure --profile abc AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: 1234567 Default region name [None]: snow Default output format [None]: json

または

aws iam list-users --profile snowballEdge --endpoint http://192.0.2.0:6078 --region snow
注記

AWS Snowball Edge でローカルに使用されるアクセスキー ID とアクセスシークレットキーを、AWS クラウド 内のキーと交換することはできません。

Snowball Edge でサポートされている IAM AWS CLI コマンドの一覧

以下では、Snowball Edge デバイスでサポートされている、IAM 用の AWS CLI コマンドとオプションのサブセットについて説明します。コマンドまたはオプションが以下に示されていない場合、そのコマンドまたはオプションはサポートされていません。コマンドでサポートされていないパラメータについては、説明に記載されています。

  • attach-role-policy - 指定した IAM ロールに指定した管理ポリシーをアタッチします。

  • attach-user-policy - 指定したユーザーに指定した管理ポリシーをアタッチします。

  • create-access-key - 指定したユーザーに対し、新しいローカル IAM シークレットアクセスキーと、対応する AWS アクセスキー ID を作成します。

  • create-policy - デバイスの新しい IAM 管理ポリシーを作成します。

  • create-role — デバイスの新しいローカル IAM ロールを作成します。以下のパラメータはサポートされていません

    • Tags

    • PermissionsBoundary

  • create-user — デバイスの新しいローカル IAM ユーザーを作成します。以下のパラメータはサポートされていません

    • Tags

    • PermissionsBoundary

  • delete-access-key - 指定したユーザーの新しいローカル IAM シークレットアクセスキーと、対応する AWS アクセスキー ID を削除します。

  • delete-policy - 指定した管理ポリシーを削除します。

  • delete-role - 指定したロールを削除します。

  • delete-user - 指定したユーザーを削除します。

  • detach-role-policy - 指定したロールから指定の管理ポリシーを削除します。

  • detach-user-policy - 指定したユーザーから指定の管理ポリシーを削除します。

  • get-policy - 指定した管理ポリシーについて、ポリシーのデフォルトバージョン、ポリシーがアタッチされているローカル IAM ユーザー、グループ、ロールの総数などの情報を取得します。

  • get-policy-version - 指定した管理ポリシーの指定のバージョンについて、ポリシードキュメントなどの情報を取得します。

  • get-role - 指定したロールについて、そのロールのパス、GUID、ARN、ロールを継承するアクセス許可を付与する信頼ポリシーなどの情報を取得します。

  • get-user - 指定した IAM ユーザーについて、ユーザーの作成日、パス、一意の ID、ARN などの情報を取得します。

  • list-access-keys - 指定した IAM ユーザーに関連付けられたアクセスキー ID に関する情報を返します。

  • list-attached-role-policies - 指定した IAM ロールにアタッチされたすべての管理ポリシーを一覧表示します。

  • list-attached-user-policies - 指定した IAM ユーザーにアタッチされたすべての管理ポリシーを一覧表示します。

  • list-entities-for-policy - 指定した管理ポリシーがアタッチされているすべてのローカル IAM ユーザー、グループ、およびロールを一覧表示します。

    • --EntityFilter: 値として user および role のみがサポートされます。

  • list-policies - ローカル AWS アカウント で使用可能なすべての管理ポリシーを一覧表示します。次のパラメータはサポートされていません

    • --PolicyUsageFilter

  • list-roles - 指定したパスプレフィックスを持つローカル IAM ロールを一覧表示します。

  • list-users - 指定したパスのプレフィックスを持つ IAM ユーザーを一覧表示します。

  • update-access-key - 指定したアクセスキーのステータスを、アクティブから非アクティブ、またはその逆に変更します。

  • update-assume-role-policy - IAM エンティティにロールを継承する許可を与えるポリシーを更新します。

  • update-role - ロールの説明または最大セッション継続時間の設定を更新します。

  • update-user - 指定した IAM ユーザーの名前やパスを更新します。

Snow Family デバイスでサポートされている IAM API オペレーション

以下は、Snowball Edge で使用できる IAM API オペレーションと、IAM API リファレンスの説明へのリンクです。

  • AttachRolePolicy - 指定した IAM ロールに指定の管理ポリシーをアタッチします。

  • AttachUserPolicy - 指定したユーザーに指定の管理ポリシーをアタッチします。

  • CreateAccessKey - 指定したユーザーに対する新しいローカル IAM シークレットアクセスキーと、対応する AWS アクセスキー ID を作成します。

  • CreatePolicy - デバイスの新しい IAM 管理ポリシーを作成します。

  • CreateRole - デバイスの新しいローカル IAM ロールを作成します。

  • CreateUser - デバイスの新しいローカル IAM ユーザーを作成します。

    以下のパラメータはサポートされていません

    • Tags

    • PermissionsBoundary

  • DeleteAccessKey - 指定したアクセスキーを削除します。

  • DeletePolicy - 指定した管理ポリシーを削除します。

  • DeleteRole - 指定したロールを削除します。

  • DeleteUser - 指定したユーザーを削除します。

  • DetachRolePolicy - 指定したロールから指定の管理ポリシーを削除します。

  • DetachUserPolicy - 指定したユーザーから指定の管理ポリシーを削除します。

  • GetPolicy - 指定した管理ポリシーについて、そのポリシーのデフォルトバージョン、ポリシーがアタッチされているローカル IAM ユーザー、グループ、ロールの総数などの情報を取得します。

  • GetPolicyVersion - 指定した管理ポリシーの指定のバージョンについて、ポリシードキュメントなどの情報を取得します。

  • GetRole - 指定したロールについて、そのロールのパス、GUID、ARN、ロールを継承するアクセス許可を付与する信頼ポリシーなどの情報を取得します。

  • GetUser - 指定した IAM ユーザーについて、ユーザーの作成日、パス、一意の ID、ARN などの情報を取得します。

  • ListAccessKeys - 指定した IAM ユーザーに関連付けられたアクセスキー ID に関する情報を返します。

  • ListAttachedRolePolicies - 指定した IAM ロールにアタッチされたすべての管理ポリシーを一覧表示します。

  • ListAttachedUserPolicies - 指定した IAM ユーザーにアタッチされたすべての管理ポリシーを一覧表示します。

  • ListEntitiesForPolicy - 指定した IAM ユーザーについて、ユーザーの作成日、パス、一意の ID、ARN などの情報を取得します。

    • --EntityFilter: 値として user および role のみがサポートされます。

  • ListPolicies - ローカル AWS アカウント で使用可能なすべての管理ポリシーを一覧表示します。次のパラメータはサポートされていません

    • --PolicyUsageFilter

  • ListRoles - 指定したパスプレフィックスを持つローカル IAM ロールを一覧表示します。

  • ListUsers - 指定したパスのプレフィックスを持つ IAM ユーザーを一覧表示します。

  • UpdateAccessKey - 指定したアクセスキーのステータスを、アクティブから非アクティブ、またはその逆に変更します。

  • UpdateAssumeRolePolicy - IAM エンティティにロールを継承する許可を与えるポリシーを更新します。

  • UpdateRole - ロールの説明または最大セッション継続時間の設定を更新します。

  • UpdateUser - 指定された IAM ユーザーの名前やパスを更新します。

Snow Family デバイスでサポートされている IAM ポリシーのバージョンと文法

以下は、IAM ポリシーのローカル IAM サポートバージョン 2012-10-17 と、ポリシーの文法のサブセットです。

ポリシータイプ サポートされている文法
ID ベースのポリシー (ユーザー/ロールポリシー) Effect」、「Action」および「Resource
注記

ローカル IAM は、"Condition"、"NotAction"、"NotResource"、および "Principal" をサポートしていません。

リソースベースのポリシー (ロールの信頼ポリシー) Effect」、「Action」および「Principal
注記

プリンシパルでは、AWS アカウント ID またはプリンシパル ID のみが許可されます。

Snow Family デバイスの IAM ポリシーの例

注記

AWS Identity and Access Management (IAM) ユーザーには、AWS OpsHub for Snow Family アプリケーションを使用して Snow Family デバイスを管理するための "snowballdevice:*" アクセス許可が必要です。

次に、Snowball Edge デバイスにアクセス許可を付与するポリシーの例を示します。

IAM API を使用した Snow Family デバイスのサンプルユーザーの GetUser 呼び出しの許可

IAM API を介したサンプルユーザーの GetUser 呼び出しを許可するには、以下のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "iam:GetUser", "Resource": "arn:aws:iam:::user/example-user" } ] }

Snow Family デバイスの Amazon S3 API へのフルアクセスを許可

Amazon S3 API へのフルアクセスを許可するには、以下のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:*", "Resource": "*" } ] }

Snow Family デバイスの Amazon S3 バケットへの読み書きアクセスの許可

特定のバケットへの読み取りおよび書き込みアクセスを許可するには、次のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket-name" }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": "s3:*Object", "Resource": "arn:aws:s3:::bucket-name/*" } ] }

Snow Family デバイスの Amazon S3 バケットへの list、get、put アクセスの許可

次のポリシーを使用して、特定の S3 バケットへの List、Get、および Put アクセスを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:List*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Snow Family デバイスの Amazon EC2 API へのフルアクセスの許可

Amazon EC2 へのフルアクセスを許可するには、以下のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:*", "Resource": "*" } ] }

Snow Family デバイスの Amazon EC2 互換インスタンスを起動および停止するためのアクセスの許可

次のポリシーを使用して、Amazon EC2 インスタンスの開始と停止のアクセスを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*" } ] }

Snow Family デバイスで DescribeLaunchTemplates への呼び出しを拒否し、DescribeImages へのすべての呼び出しを許可

DescribeLaunchTemplates への呼び出しを拒否するが、DescribeImages へのすべての呼び出しを許可するには、次のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ec2:DescribeLaunchTemplates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeImages" ], "Resource": "*" } ] }

Snow Family デバイスでの API コールのポリシー

ユーザー定義のマネージドポリシーを含む、Snow デバイスで使用可能なすべてのマネージドポリシーを一覧表示します。詳細は、「list-policies」を参照してください。

aws iam list-policies --endpoint http://ip-address:6078 --profile snowballEdge --region snow { "Policies": [ { "PolicyName": "Administrator", "Description": "Root user admin policy for Account 123456789012", "CreateDate": "2020-03-04T17:44:59.412Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "policy-id", "DefaultVersionId": "v1", "Path": "/", "Arn": "arn:aws:iam::123456789012:policy/Administrator", "UpdateDate": "2020-03-04T19:10:45.620Z" } ] }

Snow Family デバイスの TrustPolicy の例

信頼ポリシーは、通常はアクセスできない可能性のある AWS リソースへのアクセスに使用できる一時的なセキュリティ認証情報のセットを返します。これらの一時的な認証情報は、アクセスキー ID、シークレットアクセスキー、およびセキュリティトークンで構成されています。通常、クロスアカウントアクセスには、アカウントで AssumeRole を使用します。

以下に示しているのは、信頼ポリシーの例です。信頼ポリシーの詳細については、AWS Security Token Service API リファレンスAssumeRole を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountId:root" //You can use the Principal ID instead of the account ID. ] }, "Action": [ "sts:AssumeRole" ] } ] }