info@yenlo.com
ned
Menu
API Management 2 min

Implementeer de AWS Parameter store in WSO2 API Manager

MicrosoftTeams image 6
Sahil Malhotra
asw safe storage

AWS als centrale opslagplaats voor inloggegevens

AWS Systems Manager Parameter Store is een veilige, schaalbare en hiĂ«rarchische opslag die kan worden gebruikt om wachtwoorden en andere configuratieparameters op te slaan. Een van onze klanten besloot AWS Parameter Store te gebruiken als centrale parameter opslagplaats in onze applicatie. WSO2 carbon wordt ook geleverd met beveiligde vault, maar het was de eis van de klant om AWS vault te gebruiken als centrale opslagplaats voor inloggegevens. 

Oplossing 

WSO2 biedt geen directe manier om AWS Parameter Store aan te roepen. Als oplossing voor het ophalen van parameters wordt een API via WSO2 API Manager opengesteld, die de naam van de configuratieparameter aanneemt en vervolgens de backend service aanroept, geïmplementeerd als een Servlet. Het is de Servlet code logica, die toegang heeft tot de AWS Parameter Store en de waarde van de configuratieparameter terugzendt naar het aanroeppunt.  

Servlet code maakt gebruik van AWS SDK voor java, om de parameters uit de parameter store te halen en te decoderen. De servlet wordt als een .war bestand opgesteld en gehost in de Gateway node van WSO2 API Manager. De toegang tot de parameter store is beveiligd met OAuth2 autorisatie. 

AWS Systems Manager Parameter Store

Implementatiestappen 

  1. AWS Java SDK werd gebruikt bij het implementeren van de oplossing. Een servlet werd gemaakt die de AWS API’s aanriep en als .war bestand werd opgesteld in de Gateway node van WSO2 API Manager. Verder werd servlet opengesteld als REST API met behulp van WSO2 API Manager en beveiligd met standaard OAUTH2.  
  • AWS Java SDK-afhankelijkheid is toegevoegd in de pom.xml van de ssm-java-client-servlet 
<dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>ssm</artifactId>
      <version>2.15.26</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
  • Servlet code leest de aanvraag parameter en geeft deze door aan SsmManager 
@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String param = request.getParameter("param");
		logger.info("Get param name: " + param);

		String fullParamPath = buildPath(param);
		logger.info("Full parameter path: " + fullParamPath);

		SsmManager manager = new SsmManager();
		String value = manager.get(fullParamPath);

		String json = buildJson(param, value, fullParamPath);

		response.setContentType("application/json;charset=UTF-8");
		response.getWriter().println(json);
	}
  • SsmManager roept AWS API aan, met behulp van AWS Java SDK 
try (SsmClient client = provider.getClient()) {			
			GetParameterRequest getParameterRequest = GetParameterRequest
					.builder()
					.name(parameter)
					.withDecryption(Boolean.TRUE)
					.build();

			GetParameterResponse response = client.getParameter(getParameterRequest);
			return response.parameter().value();
		} catch (ParameterNotFoundException e) {			
			return defaultValue;
		}

Uitvoeringsstappen 

  1. Servlet en andere ondersteunende code die communiceert met AWS parameter store, is gebundeld als een .war bestand (ssm-api-1.0.war) en uitgevoerd op de volgende API Manager locatie  
  • APIM_HOME/repository/deployments/server/webapps 
  1. Daarnaast moeten API definities worden aangemaakt en uitgevoerd via uitgeversportalen
API definition
  1. Klanten die willen verbinden met de parameter store, roepen de API aan met behulp van basic Oauth2 en de naam van de parameter. Bij een succesvolle parameter naam waarde paar in JSON formaat is teruggestuurd. 
Parameter Name Value

ned
Sluiten