GCP提供了非常灵活的特权系统,该系统允许任何项目所有者将任何人的特权授予任何人。它对用户很有帮助,但对管理员却很糟糕。...
是否有良好的API可以列出用户/服务帐户对组织具有一定权限的GCP项目?
答案 0 :(得分:0)
您可以使用一组gcloud
命令来实现,我想出了以下脚本:
echo "PROJECT_ID,ROLES,MEMBERS" | cat >> output.csv
for i in $(gcloud projects list | sed 1d | cut -f1 -d$' '); do
echo "Getting IAM policies for project:" $i;
echo "..........";
paste -d "," <(printf %s "$(for j in $(seq 1 $(gcloud projects get-iam-policy $i | yq '.bindings | .[].role' | cut -d "\"" -f2 | wc -l)); do echo $i; done;)") <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].role' | cut -d "\"" -f2)") <(printf %s "$(gcloud projects get-iam-policy $i | yq '.bindings | .[].members | join(",")' | cut -d"\"" -f2)") | cat >> output.csv
echo "Done. Logs created at file" $output.csv;
echo "--------------------------------"
done;
在运行它之前,您应该已经安装jq
和yq
:
pip install jq
pip install yq
此时,您可以运行命令(只需将其复制并粘贴到Cloud Shell中)。这将创建一个名为output.csv
的文件,其中包含组织内每个项目的IAM策略。
拥有此输出文件后,您可以使用所需的用户/ SA运行以下命令:
cat output.csv | grep <USER/SA>
此命令的输出将具有以下结构:
<PROJECT_NAME>,<ROLE>,<USER/SA>
答案 1 :(得分:0)
您可以使用以下命令在您的组织内的IAM策略中找到所有具有user:foo @的组织/文件夹/项目:
package work.basil.example;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.Route;
/**
* The main view contains a button and a click listener.
*/
@Route ( "" )
//@PWA(name = "Project Base for Vaadin", shortName = "Project Base")
@CssImport ( "./styles/shared-styles.css" )
@CssImport ( value = "./styles/vaadin-text-field-styles.css", themeFor = "vaadin-text-field" )
public class MainView extends VerticalLayout
{
public MainView ( )
{
this.add( new H1( "Animal" ) );
this.add( new H2( "Identity" ) );
this.add( new TextField( "Name" ) );
this.add( new TextField( "Species" ) );
this.add( new TextField( "Color" ) );
this.add( new H2( "Owner" ) );
this.add( new TextField( "Name" ) );
this.add( new TextField( "Phone" ) );
}
}
您可以将范围更改为文件夹或项目。
您必须对作用域具有cloudasset.assets.searchAllIamPolicies权限。
文档:https://cloud.google.com/asset-inventory/docs/searching-iam-policies
尽管它不涵盖所有政策:https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types