与此策略问题ForAnyValue:StringLike类似,是否可以在同一联合 OIDC 提供商策略声明条件中定义多个值?
具体来说,我尝试允许来自GitHub Actions OIDC 的多个主题,以允许来自特定存储库或分支的操作针对 AWS 资源运行操作。
(主题)字段sub用于填充声明。
在每个配置 AWS 凭证操作的条件中使用单个值(即单个存储库),可以按预期工作:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::12345678901:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:myorg/myrepo:pull_request"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
而使用ForAnyValue:StringLike多个值会产生错误Not authorized to perform sts:AssumeRoleWithWebIdentity:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::12345678901:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"ForAnyValue:StringLike": …Run Code Online (Sandbox Code Playgroud) 我正在尝试检索 app/Config/routes.php 中包含的所有路由的列表,并将它们显示在管理页面上。我能够使用检索控制器列表$controllers = App::objects('controller');,我想知道是否可以对路线执行相同的操作。
我已经尝试按照下面的代码使用子字符串,但是想到的问题被注释掉了路线、空格和路线的变化,例如指向外部资源的链接。我现在正在考虑使用 php 的 tokenizer,但我想知道 CakePHP 中是否内置了一个简单而优雅的解决方案。
$source = file_get_contents(APP . 'Config/routes.php');
$startPos = stripos($source, 'Router::connect(');
$routes = array();
while ($startPos !== false) {
$endPos = stripos($source, ';', $startPos + 15);
if($endPos !== false) {
$route = substr($source, $startPos, $endPos - $startPos);
$urlStart = stripos($route, "'");
if($urlStart !== false) {
$urlEnd = stripos($route, "'", $urlStart + 1);
$url = substr($route, $urlStart + 1, $urlEnd - $urlStart - 1);
$routes[] = array('route'=>$route, 'url'=>$url);
} …Run Code Online (Sandbox Code Playgroud)