当前位置: 首页 > 科技观察

使用SQL查询你的云API数据-Steampipe

时间:2023-03-13 14:40:49 科技观察

Steampipe:select*fromcloud让你可以使用SQL即时查询你的云服务(AWS、Azure、GCP、Github、Slack等),是一个开源的CLI工具,不需要数据库。Steampipe将API和服务公开为高性能关系数据库,使您能够编写基于SQL的查询来探索动态数据。模组通过简单的HCL构建的仪表板、报告和控件扩展了Steampipe的功能。安装可以到官网https://steampipe.io/downloads选择对应的平台下载安装包。如果您是Linux用户,可以使用以下命令进行一键安装。sudo/bin/sh-c"$(curl-fsSLhttps://raw.githubusercontent.com/turbot/steampipe/main/install.sh)"检查是否安装成功。~$steampipe-vsteampipeversion0.15.2如果显示以上版本信息,则安装成功。接下来就可以根据自己的需要安装相应的插件了。蒸汽管插件安装蒸汽管。如果你是Mac用户,可以使用Homebrew进行一键安装brewinstallsteampipe。这里我们以AWS为例,讲解一下如何使用steampipe。首先,下载并安装Steampipe,然后安装插件:steampipeplugininstallawsSteampipe将在您第一次运行steampipe查询时下载并安装其他组件,因此最初加载可能需要几秒钟。Steampipe支持很多插件,可以在官网https://hub.steampipe.io/plugins查看。安装插件后,Steampipe将使用您的凭证文件和/或环境变量中的默认AWS凭证,因此您需要确保这些也已配置。我们可以使用profile参数从AWS凭证文件中指定一个命名配置文件。每个配置文件的连接,使用命名配置文件可能是最常见的配置:aws凭证文件[profile_y]aws_access_key_id=AKIA4YFAKEKEYXTDS252aws_secret_access_key=SH42YMW5p3EThisIsNotRealzTiEUwXN8BOIOF5J8mregion=us-west-2[profile_z]aws_access_key_id=AKIA4YFAKEKEYJ7HS98Faws_secret_access_key=Apf938vDKd8ThisIsNotRealzTiEUwXj9nKLWP9mg4aws.spcconnection"aws_account_y"{plugin="aws"profile="profile_y"regions=["us-east-1","us-west-2"]}connection"aws_account_z"{plugin="aws"profile="profile_z"regions=["ap-southeast-1","ap-southeast-2"]}Ifyoucanrunawsec2describe-vpcs,theproofisreadytouse.ThecommandsprovidedbySteampipeallowyoutodiscoverandexploretablesanddatawithoutleavingthequeryshell.您可以运行steampipequery以打开交互式查询会话:$steampipequeryWelcometoSteampipev0.5.0有关更多信息,请键入.help>然后运行??.tables命令以列出可用表:>.tables==>aws+-------------------------------------+----------------------------------------------+|表|说明|+----------------------------------------+--------------------------------------------+|aws_accessanalyzer_analyzer|AWS访问分析器||aws_帐户|AWS账户||aws_acm_certificate|AWSACM证书||AWSAPI网关API密钥|...+----------------------------------------+-------------------------------------------+通常我们会看到有很多aws插件中可用的表格!比如有aws_iam_role表,我们可以运行.inspect命令查看表的内容:>.inspectaws_iam_role+---------------------------+----------------------------+------------------------------------------------------------------------------------------------+|栏目|类型|说明|+--------------------------+---------------------------+--------------------------------------------------------------------------------------------+|帐号编号|文字|资源所在的AWS账户ID。||又名|jsonb|资源的全局唯一标识符字符串(也称为)数组。||阿恩|文字|指定角色的Amazon资源名称(ARN)。||假设_role_policy|jsonb|授予实体代入角色权限的策略。||假设_role_policy_std|jsonb|包含规范形式的代入角色策略,以便于搜索。||attached_policy_arns|jsonb|附加到角色的托管策略列表。||创建日期|没有时区的时间戳|创建角色的日期和时间。||说明|文字|用户提供的角色描述。||inline_policies|jsonb|作为角色的内联策略嵌入的策略文档列表.....+----------------------------+---------------------------+--------------------------------------------------------------------------------------------+现在我们知道aws_iam_role表中有哪些列可用,我们可以运行一个简单的查询来列出outofrole:selectnamefromaws_iam_role然后查询稍微复杂一点的场景,让我们找到不应用边界策略的角色:selectnamefromaws_iam_rolewherepermissions_boundary_arnisnull;和其他数据库一样,我们也可以将表join在一起例如,我们可以找到附加了AWS托管策略的所有角色:selectr.name,policy_arn,p.is_aws_managedfromaws_iam_roleasr,jsonb_array_elements_text(attached_policy_arns)aspolicy_arn,aws_iam_policyaspwherep.arn=policy_arn-pmand_aws;--------------------------------------------------+----------------------------------------------------------------------------------+----------------+|姓名|policy_arn|is_aws_managed|+---------------------------------------------------+----------------------------------------------------------------------------------+-----------------+|aws-elasticbeanstalk-ec2-角色|arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier|真||aws-elasticbeanstalk-ec2-角色|arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker|真||管理员|arn:aws:iam::aws:策略/ReadOnlyAccess|真||AWSServiceRoleForSSO|arn:aws:iam::aws:policy/aws-service-role/AWSSSOServiceRolePolicy|真||AWSServiceRoleForAccessAnalyzer|arn:aws:iam::aws:policy/aws-服务角色/AccessAnalyzerServiceRolePolicy|真||aws-elasticbeanstalk-服务角色|角色/AWSElasticBeanstalkEnhancedHealth|真||AWSServiceRoleForElasticLoadBalancing|arn:aws:iam::aws:policy/aws-service-role/AWSElasticLoadBalancingServiceRolePolicy|真||服务角色/AWSElasticBeanstalkService|真||AWSServiceRoleForOrganizations|arn:aws:iam::aws:policy/aws-service-role/AWSElasticBeanstalkService|真|+----------------------------------------------------+--------------------------------------------------------------------------------+-----------------+Steampipe插件提供了一种简单的方法来查询您的配置,而Steampipe模式允许您创建和共享仪表板、报告和控件Steampipe仪表板允许您可视化您的Steampipe数据。我们可以下载AWSInsightsmod并查看仪表板。首先克隆repo:gitclonehttps://github.com/turbot/steampipe-mod-aws-insights.git然后切换到该目录并运行steampipe仪表板:cdsteampipe-mod-aws-insightssteampipedashboard这应该开始仪表板已启动。Steampipe将在您的浏览器中打开http://localhost:9194/。主页列出了可用的仪表板,可以按标题或标签进行搜索。单击报告的标题以查看它。例如,单击AWSCloudTrailTrailDashboard进行查看。您可以在任何页面顶部的搜索栏中导航到另一个仪表板,或者,您可以单击左上角的Steampipe徽标返回主页。完成后,您可以返回到终端控制台并键入Ctrl+c退出。Git存储库:https://github.com/turbot/steampipe。