ポリシーを使用した AWS アクセスおよび権限の制御

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:10分
  • クラウドディスカバリー および クラウドプロビジョニングとガバナンスAWS リソースへのアクセスに必要なレベルの権限を持つポリシーを設定します。

    始める前に

    IAM ユーザーとユーザーポリシーの作成についてよく理解してください。AWS ドキュメントを参照してください。

    クラウドディスカバリー を使用してリソースを検出し、クラウドプロビジョニングとガバナンス でリソースを管理するために必要な権限のレベルを識別します 。例を次に示します。
    • CloudFormation を使用してスタックを展開するには、AWS では S3 バケットを使用して CloudFormation テンプレートを保存したり実行したりするため、さらに S3 権限が必要です。こうした権限は、AWS コンソールから同じ CloudFormation テンプレートを実行する場合でも必要です。
    • カスタムポリシーを使用してパターンディスカバリーを実行するには、読み取り専用アクセス権が必要です。
    AWS CloudFormation は、テンプレートに記述されている AWS サービスを呼び出して、リソースのプロビジョニングと構成を行います。詳細については、「AWS CloudFormation の仕組み (How does AWS CloudFormation work?)」を参照してください。
    必要なロール:
    • AWS マネジメントコンソール アドミニストレーター
    • クラウドディスカバリー の場合:admin または discovery_admin
    • クラウドプロビジョニングとガバナンス の場合:admin または sn_cmp.cloud_admin

    このタスクについて

    構成するポリシーでは、ユーザー、グループ、またはロールに割り当てできる AWS 権限を定義します。使用する AWS サービスに応じて、ディスカバリーとプロビジョニングを実行するサービスのアクション、および クラウドプロビジョニングとガバナンス を使用するライフサイクルアクションを指定します。

    手順

    1. 関連するサービスアカウントの認証情報を使用して、AWS の管理コンソールにログインします。
      一時的な認証情報を使用したアクセスのために IAM ユーザーまたは IAM ロールを使用した場合は、同じ IAM ユーザーまたは IAM ロールを使用してログインしてください。
    2. 関連するユーザーのインスタンスでユーザーレコードを開きます。
    3. 次のいずれかの方法を使用して、AWS 管理コンソールでユーザーポリシーを定義します。
      • アドミニストレーターにインスタンスへのアクセス権を付与します。この方法では、アクセスキー ID と秘密アクセスキーを使用する場合と同じレベルのアクセス権が付与されます。そのユーザープロファイルに AdministratorAccess ポリシーをアタッチします。
        注:
        クラウドリソースのプロビジョニングではなく、クラウドディスカバリー のみをサポートするユーザーポリシーを作成するには、代わりに ReadOnlyAccess ポリシーをアタッチします。
      • わかりやすい名前でカスタムポリシーを作成します。[ポリシードキュメント] フィールドに、このポリシーが実行を許可する API を含むコードを記述します。
        注:
        次の JSON サンプルには、クラウドディスカバリー の権限が含まれています。
        {
           "Version":"2012-10-17",
           "Statement":[
              {
                 "Sid":"PermissionsNeededForDiscovery",
                 "Effect":"Allow",
                 "Action":[
                    "account:ListRegions",
                    "apigateway:GET",
                    "application-autoscaling:Describe*",
                    "autoscaling-plans:Describe*",
                    "autoscaling:Describe*",
                    "autoscaling:DescribeAutoScalingGroups",
                    "autoscaling:DescribeLaunchConfigurations",
                    "cloudformation:Describe*",
                    "cloudformation:DescribeStack*",
                    "cloudformation:List*
                    "cloudwatch:Get*",
                    "cloudwatch:List*",
                    "config:ListDiscoveredResources",
                    "dynamodb:Describe*",
                    "dynamodb:DescribeTable",
                    "dynamodb:ListGlobalTables",
                    "dynamodb:ListTables",
                    "ec2:Describe*",
                    "ec2:ReportInstanceStatus",
                    "ecs:Describe*",
                    "ecs:List*",
                    "eks:Describe*",
                    "eks:List*",
                    "elasticache:Describe*",
                    "elasticache:List*",
                    "elasticfilesystem:Describe*",
                    "elasticloadbalancing:Describe*",
                    "lambda:Get*",
                    "lambda:List*",
                    "organizations:Describe*",
                    "organizations:DescribeOrganization",
                    "organizations:List*",
                    "rds:Describe*",
                    "redshift:Describe*",
                    "route53:GetHostedZone",
                    "route53:List*",
                    "s3:GetAccountPublicAccessBlock",
                    "s3:GetBucket*",
                    "s3:GetBucketLocation",
                    "s3:List*",
                    "sdb:GetAttributes",
                    "sns:GetEndpointAttributes",
                    "sns:GetSubscriptionAttributes",
                    "sns:List*",
                    "sns:ListPlatformApplications",
                    "sns:ListSubscriptions",
                    "sns:ListSubscriptionsByTopic",
                    "sns:ListTopics",
                 ],
                 "Resource":"*"
              }
           ]
        }
      • 次の JSON サンプルには、クラウドディスカバリークラウドプロビジョニングとガバナンス の権限が含まれています。
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "PermissionsNeededForCPG",
                    "Effect": "Allow",
                    "Action": [
                        "account:ListRegions",
                        "apigateway:GET",
                        "application-autoscaling:Describe*",
                        "autoscaling-plans:Describe*",
                        "autoscaling:Describe*",
                        "autoscaling:DescribeAutoScalingGroups",
                        "autoscaling:DescribeLaunchConfigurations",
                        "cloudformation:Describe*",
                        "cloudformation:DescribeStack*",
                        "cloudwatch:Get*",
                        "cloudwatch:List*",
                        "config:ListDiscoveredResources"
                        "dynamodb:Describe*",
                        "dynamodb:DescribeTable",
                        "dynamodb:ListGlobalTables",
                        "dynamodb:ListTables",
                        "ec2:Describe*",
                        "ec2:ReportInstanceStatus",
                        "ecs:Describe*",
                        "ecs:List*",
                        "eks:Describe*",
                        "eks:List*",
                        "elasticache:Describe*",
                        "elasticache:List*",
                        "elasticfilesystem:Describe*",
                        "elasticloadbalancing:Describe*",
                        "lambda:Get*",
                        "lambda:List*",
                        "organizations:Describe*",
                        "organizations:DescribeOrganization",
                        "organizations:List*",
                        "rds:Describe*",
                        "redshift:Describe*",
                        "route53:GetHostedZone",
                        "route53:List*",
                        "s3:GetAccountPublicAccessBlock",
                        "s3:GetBucket*",
                        "s3:GetBucketLocation",
                        "s3:List*",
                        "sdb:GetAttributes",
                        "sns:GetEndpointAttributes",
                        "sns:GetSubscriptionAttributes",
                        "sns:List*",
                        "sns:ListPlatformApplications",
                        "sns:ListSubscriptions",
                        "sns:ListSubscriptionsByTopic",
                        "sns:ListTopics",
                    ],
                    "Resource": "*"
                },
                {
                    "Sid": "MinimalPermissionsNeededForEc2ProvisioningThroughCloudFormation",
                    "Effect": "Allow",
                    "Action": [
                        "cloudformation:CreateStack",
                        "cloudformation:CreateUploadBucket",
                        "cloudformation:DeleteStack",
                        "cloudformation:DescribeStackEvents",
                        "cloudformation:DescribeStackResources",
                        "cloudformation:DescribeStacks",
                        "cloudformation:GetTemplate",
                        "cloudformation:GetTemplateSummary",
                        "cloudformation:List*",
                        "cloudformation:UpdateStack",
                        "cloudformation:ValidateTemplate"
                        "ec2:*",
                        "s3:CreateBucket",
                        "s3:DeleteBucket",
                        "s3:DeleteObject",
                        "s3:GetObject",
                        "s3:ListBucket",
                        "s3:PutObject",
                    ],
                    "Resource": "*"
                }
            ]
        }