github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/tests/manual_testing/args/with1/dashboard.sp (about)

     1  
     2  dashboard "bug_column_does_not_exist" {
     3    title         = "column does not exist"
     4  
     5  
     6    input "policy_arn" {
     7      title = "Select a policy:"
     8      query = query.test1_aws_iam_policy_input
     9      width = 4
    10    }
    11  
    12  
    13    container {
    14  
    15      graph {
    16        title     = "Relationships"
    17        type      = "graph"
    18        direction = "left_right" //"TD"
    19  
    20        with "attached_users" {
    21          sql = <<-EOQ
    22            select
    23              u.arn as user_arn
    24              --,policy_arn
    25            from
    26              aws_iam_user as u,
    27              jsonb_array_elements_text(attached_policy_arns) as policy_arn
    28            where
    29              policy_arn = $1;
    30              --policy_arn = 'arn:aws:iam::aws:policy/AdministratorAccess'
    31          EOQ
    32  
    33          param policy_arn {
    34            // commented out becuase input not working here yet..
    35            // default = self.input.policy_arn.value
    36            default = "arn:aws:iam::aws:policy/AdministratorAccess"
    37          }
    38  
    39        }
    40  
    41        with "attached_roles" {
    42          sql = <<-EOQ
    43            select
    44              arn as role_arn
    45            from
    46              aws_iam_role,
    47              jsonb_array_elements_text(attached_policy_arns) as policy_arn
    48            where
    49              policy_arn = $1;
    50          EOQ
    51  
    52          #args = [self.input.policy_arn.value]
    53          #args = ["arn:aws:iam::aws:policy/AdministratorAccess"]
    54  
    55          param policy_arn {
    56            //default = self.input.policy_arn.value
    57            default = "arn:aws:iam::aws:policy/AdministratorAccess"
    58          }
    59        }
    60  
    61  
    62        nodes = [
    63          node.test1_aws_iam_policy_node,
    64          node.test1_aws_iam_user_nodes,
    65        ]
    66  
    67        edges = [
    68          edge.test1_aws_iam_policy_from_iam_user_edges,
    69        ]
    70  
    71        args = {
    72          policy_arn  = "arn:aws:iam::aws:policy/AdministratorAccess" //self.input.policy_arn.value
    73  
    74          //// works if you hardcode the list
    75          policy_arns  = ["arn:aws:iam::aws:policy/AdministratorAccess"]
    76  
    77          // this causes  cannot serialize unknown values
    78          //policy_arns  = [self.input.policy_arn.value]
    79  
    80          user_arns   = [with.attached_users.rows[0].user_arn]
    81          role_arns   = with.attached_roles.rows[*].role_arn
    82  
    83        }
    84      }
    85  
    86    }
    87  }
    88  
    89  query "test1_aws_iam_policy_input" {
    90    sql = <<-EOQ
    91      with policies as (
    92        select
    93          title as label,
    94          arn as value,
    95          json_build_object(
    96            'account_id', account_id
    97          ) as tags
    98        from
    99          aws_iam_policy
   100        where
   101          not is_aws_managed
   102  
   103        union all select
   104          distinct on (arn)
   105          title as label,
   106          arn as value,
   107          json_build_object(
   108            'account_id', 'AWS Managed'
   109          ) as tags
   110        from
   111          aws_iam_policy
   112        where
   113          is_aws_managed
   114      )
   115      select
   116        *
   117      from
   118        policies
   119      order by
   120        label;
   121    EOQ
   122  }
   123  
   124  
   125  
   126  node "test1_aws_iam_policy_node" {
   127    sql = <<-EOQ
   128      select
   129        distinct on (arn)
   130        arn as id,
   131        name as title,
   132        jsonb_build_object(
   133          'ARN', arn,
   134          'AWS Managed', is_aws_managed::text,
   135          'Attached', is_attached::text,
   136          'Create Date', create_date,
   137          'Account ID', account_id
   138        ) as properties
   139      from
   140        aws_iam_policy
   141      where
   142        arn = $1;
   143    EOQ
   144  
   145    param "policy_arn" {}
   146  }
   147  
   148  
   149  node "test1_aws_iam_user_nodes" {
   150  
   151    sql = <<-EOQ
   152      select
   153        arn as id,
   154        name as title,
   155        jsonb_build_object(
   156          'ARN', arn,
   157          'Path', path,
   158          'Create Date', create_date,
   159          'MFA Enabled', mfa_enabled::text,
   160          'Account ID', account_id
   161        ) as properties
   162      from
   163        aws_iam_user
   164      where
   165        arn = any($1::text[]);
   166    EOQ
   167  
   168    param "user_arns" {}
   169  }
   170  
   171  
   172  
   173  edge "test1_aws_iam_policy_from_iam_user_edges" {
   174    title = "attaches"
   175  
   176    sql = <<-EOQ
   177     select
   178        policy_arns as to_id,
   179        user_arns as from_id
   180      from
   181        unnest($1::text[]) as policy_arns,
   182        unnest($2::text[]) as user_arns
   183    EOQ
   184  
   185    param "policy_arns" {}
   186    param "user_arns" {}
   187  
   188  }