diff --git a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/Front50ApplicationResourcePermissionSource.java b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ApplicationResourcePermissionSource.java similarity index 93% rename from fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/Front50ApplicationResourcePermissionSource.java rename to fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ApplicationResourcePermissionSource.java index 0763e3dae..5b41716c9 100644 --- a/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/Front50ApplicationResourcePermissionSource.java +++ b/fiat-roles/src/main/java/com/netflix/spinnaker/fiat/providers/ApplicationResourcePermissionSource.java @@ -27,12 +27,12 @@ import java.util.Map; import javax.annotation.Nonnull; -public final class Front50ApplicationResourcePermissionSource +public final class ApplicationResourcePermissionSource implements ResourcePermissionSource { private final Authorization executeFallback; - public Front50ApplicationResourcePermissionSource(Authorization executeFallback) { + public ApplicationResourcePermissionSource(Authorization executeFallback) { this.executeFallback = executeFallback; } diff --git a/fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/providers/DefaultApplicationProviderSpec.groovy b/fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/providers/DefaultApplicationProviderSpec.groovy index 7168918e9..b9c897df6 100644 --- a/fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/providers/DefaultApplicationProviderSpec.groovy +++ b/fiat-roles/src/test/groovy/com/netflix/spinnaker/fiat/providers/DefaultApplicationProviderSpec.groovy @@ -34,7 +34,7 @@ class DefaultApplicationProviderSpec extends Specification { ClouddriverService clouddriverService = Mock(ClouddriverService) Front50Service front50Service = Mock(Front50Service) - ResourcePermissionProvider defaultProvider = new AggregatingResourcePermissionProvider<>([new Front50ApplicationResourcePermissionSource(Authorization.READ)]) + ResourcePermissionProvider defaultProvider = new AggregatingResourcePermissionProvider<>([new ApplicationResourcePermissionSource(Authorization.READ)]) @Subject DefaultApplicationResourceProvider provider @@ -114,7 +114,7 @@ class DefaultApplicationProviderSpec extends Specification { def "should add fallback execute permissions based on executeFallback value" () { setup: def app = new Application().setName("app") - def provider = new AggregatingResourcePermissionProvider([new Front50ApplicationResourcePermissionSource(fallback)]) + def provider = new AggregatingResourcePermissionProvider([new ApplicationResourcePermissionSource(fallback)]) when: app.setPermissions(makePerms(givenPermissions)) diff --git a/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/AggregateResourcePermissionConfig.java b/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/AggregateResourcePermissionConfig.java new file mode 100644 index 000000000..00d94babd --- /dev/null +++ b/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/AggregateResourcePermissionConfig.java @@ -0,0 +1,39 @@ +package com.netflix.spinnaker.fiat.config; + +import com.netflix.spinnaker.fiat.model.resources.Account; +import com.netflix.spinnaker.fiat.model.resources.Application; +import com.netflix.spinnaker.fiat.model.resources.BuildService; +import com.netflix.spinnaker.fiat.providers.AggregatingResourcePermissionProvider; +import com.netflix.spinnaker.fiat.providers.ResourcePermissionProvider; +import com.netflix.spinnaker.fiat.providers.ResourcePermissionSource; +import java.util.List; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AggregateResourcePermissionConfig { + + @Bean + @ConditionalOnProperty(value = "auth.permissions.provider.account", havingValue = "aggregate") + public ResourcePermissionProvider aggregateAccountPermissionProvider( + List> sources) { + return new AggregatingResourcePermissionProvider<>(sources); + } + + @Bean + @ConditionalOnProperty(value = "auth.permissions.provider.application", havingValue = "aggregate") + public ResourcePermissionProvider aggregateApplicationPermissionProvider( + List> sources) { + return new AggregatingResourcePermissionProvider<>(sources); + } + + @Bean + @ConditionalOnProperty( + value = "auth.permissions.provider.build-service", + havingValue = "aggregate") + public ResourcePermissionProvider aggregateBuildServicePermissionProvider( + List> sources) { + return new AggregatingResourcePermissionProvider<>(sources); + } +} diff --git a/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/DefaultResourcePermissionConfig.java b/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/DefaultResourcePermissionConfig.java index 5b421f476..c6749409f 100644 --- a/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/DefaultResourcePermissionConfig.java +++ b/fiat-web/src/main/java/com/netflix/spinnaker/fiat/config/DefaultResourcePermissionConfig.java @@ -20,11 +20,11 @@ import com.netflix.spinnaker.fiat.model.resources.Application; import com.netflix.spinnaker.fiat.model.resources.BuildService; import com.netflix.spinnaker.fiat.providers.*; -import java.util.List; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; @Configuration class DefaultResourcePermissionConfig { @@ -33,6 +33,7 @@ class DefaultResourcePermissionConfig { @ConditionalOnProperty( value = "auth.permissions.source.account.resource.enabled", matchIfMissing = true) + @Order ResourcePermissionSource accountResourcePermissionSource() { return new AccessControlledResourcePermissionSource<>(); } @@ -47,27 +48,14 @@ public ResourcePermissionProvider defaultAccountPermissionProvider( return new DefaultResourcePermissionProvider<>(accountResourcePermissionSource); } - @Bean - @ConditionalOnProperty(value = "auth.permissions.provider.account", havingValue = "aggregate") - public ResourcePermissionProvider aggregateAccountPermissionProvider( - List> sources) { - return new AggregatingResourcePermissionProvider<>(sources); - } - - @Bean - @ConditionalOnProperty("auth.permissions.source.application.prefix.enabled") - @ConfigurationProperties("auth.permissions.source.application.prefix") - ResourcePermissionSource applicationPrefixResourcePermissionSource() { - return new ResourcePrefixPermissionSource(); - } - @Bean @ConditionalOnProperty( - value = "auth.permissions.source.application.front50.enabled", + value = "auth.permissions.source.application.resource.enabled", matchIfMissing = true) - ResourcePermissionSource front50ResourcePermissionSource( + @Order + ResourcePermissionSource applicationResourcePermissionSource( FiatServerConfigurationProperties fiatServerConfigurationProperties) { - return new Front50ApplicationResourcePermissionSource( + return new ApplicationResourcePermissionSource( fiatServerConfigurationProperties.getExecuteFallback()); } @@ -77,21 +65,15 @@ ResourcePermissionSource front50ResourcePermissionSource( havingValue = "default", matchIfMissing = true) public ResourcePermissionProvider defaultApplicationPermissionProvider( - ResourcePermissionSource front50ResourcePermissionSource) { - return new DefaultResourcePermissionProvider<>(front50ResourcePermissionSource); - } - - @Bean - @ConditionalOnProperty(value = "auth.permissions.provider.application", havingValue = "aggregate") - public ResourcePermissionProvider aggregateApplicationPermissionProvider( - List> sources) { - return new AggregatingResourcePermissionProvider<>(sources); + ResourcePermissionSource applicationResourcePermissionSource) { + return new DefaultResourcePermissionProvider<>(applicationResourcePermissionSource); } @Bean @ConditionalOnProperty( value = "auth.permissions.source.build-service.resource.enabled", matchIfMissing = true) + @Order ResourcePermissionSource buildServiceResourcePermissionSource() { return new AccessControlledResourcePermissionSource<>(); } @@ -107,11 +89,9 @@ public ResourcePermissionProvider defaultBuildServicePermissionPro } @Bean - @ConditionalOnProperty( - value = "auth.permissions.provider.build-service", - havingValue = "aggregate") - public ResourcePermissionProvider aggregateBuildServicePermissionProvider( - List> sources) { - return new AggregatingResourcePermissionProvider<>(sources); + @ConditionalOnProperty("auth.permissions.source.application.prefix.enabled") + @ConfigurationProperties("auth.permissions.source.application.prefix") + ResourcePermissionSource applicationPrefixResourcePermissionSource() { + return new ResourcePrefixPermissionSource(); } }