Shared posts

05 Nov 19:50

Migrating from Open Policy Agent to Amazon Verified Permissions

by Samuel Folkes

Application authorization is a critical component of modern software systems, determining what actions users can perform on specific resources. Many organizations have adopted Open Policy Agent (OPA) with its Rego policy language to implement fine-grained authorization controls across their applications and infrastructure. While OPA has proven effective for policy-as-code implementations, organizations are increasingly looking for more performant and managed services that reduce operational overhead while maintaining the flexibility and power of policy-based authorization.

Amazon Verified Permissions is a fully managed authorization service that uses the Cedar policy language to help you implement fine-grained permissions for your applications. Cedar is an open source policy language developed by AWS that provides many of the same capabilities as Rego while offering improved performance (42–60 times faster than Rego), straightforward policy authoring, and formal verification capabilities. By migrating from OPA to Verified Permissions, organizations can reduce the operational burden of managing authorization infrastructure while gaining access to a service designed specifically for scalable, secure authorization.

This migration offers several key benefits: reduced infrastructure management overhead, improved policy performance and validation, enhanced security through the AWS managed service model, and seamless integration with other AWS services. Additionally, Cedar’s syntax is designed to be more intuitive than Rego, reducing the effort needed to write, read, and maintain policies.

In this post, we explore the process of migrating from OPA and Rego to Verified Permissions and Cedar, including policy translation strategies, software development and testing approaches, and deployment considerations. We walk through practical examples that demonstrate how to convert common Rego policies to Cedar policies and integrate Verified Permissions into your existing applications.

Solution overview

The migration from OPA to Verified Permissions represents a shift from self-managed authorization infrastructure to a fully managed service. In a typical OPA setup, customers have OPA servers running either as sidecars, standalone services, or embedded libraries that evaluate Rego policies against incoming authorization requests. These servers pull policy bundles from storage systems and maintain their own performance and availability.

With Verified Permissions, AWS manages the entire authorization infrastructure. Applications make API calls to the Verified Permissions service which evaluates Cedar policies stored in managed policy stores. This removes the need to operate and maintain OPA servers, manage policy distribution, or handle service scaling and availability. This shift means that your team can concentrate on authorization logic rather than infrastructure management while gaining the benefits of the scale and reliability provided by AWS.

Understanding the differences: Comparing Rego with Cedar

It’s important to understand the fundamental differences between the Rego and Cedar policy languages before beginning your migration. These differences will shape how you approach translating your existing policies.

Policy structure and philosophy

Rego policies are built around rules that can be evaluated to produce sets of results. Rego uses a logic programming approach where you define conditions that must be satisfied for a rule to be true. Policies often involve complex queries, loops, and comprehensions to examine data structures.

Example Rego policy

package authz
default allow = false

# Rule 1: Allow users with the viewer role to read documents
allow {
	input.action == "read"
	input.resource.type == "document"
	input.user.role == "viewer"
}
# Rule 2: Allow users with the editor role to write documents
allow {
	input.action == "write"
	input.resource.type == "document"
	input.user.role == "editor"
}

Cedar takes a more declarative approach with explicit permit and forbid statements. Each Cedar policy is a standalone authorization decision that clearly states what is being allowed or denied. Cedar policies are designed to be human-readable and straightforward to audit.

Equivalent Cedar policies

// Policy 1: Allow principals with the viewer role to read documents 
permit (
	principal in UserRole::"viewer",
	action == Action::"read",
	resource in ResourceType::"document"
);
// Policy 2: Allow principals with the editor role to write documents
permit (
	principal in UserRole::"editor",
	action == Action::"write",
	resource in ResourceType::"document"
);

Data model differences

One of the most significant differences between the two evaluation engines is how they handle data. Rego works with arbitrary JSON input data, giving users complete flexibility in how they structure authorization requests. Users can access any field in your input data using Rego’s path notation.

Cedar allows for the creation of a defined schema with typed entities. This means that users need to model authorization data as entities with specific types, attributes, and relationships. While this requires more upfront planning, it provides superior validation, runtime performance, and tooling support.

Policy evaluation

Rego and Cedar differ fundamentally in their approaches to policy evaluation. Rego uses a logic programming model and, as a result, policy evaluation functions much like a logic puzzle solver. It starts with a question and searches backward through linked rules to find an answer. This approach allows for flexible policy composition but can often be slower, less predictable, and more difficult to audit.

Cedar, on the other hand, uses a simpler functional evaluation approach. It uses a straightforward evaluation model where each policy is checked independently against the authorization request. Policies use basic conditional logic to produce fast, deterministic allow or deny decisions. A policy either fully matches the authorization request (principal, action, resource, and all conditions), or it doesn’t apply. This is essential for high-performance authorization scenarios where predictable evaluation time and clear audit trails are essential. Cedar policy evaluation follows four core principles:

  • Default deny for access not explicitly granted
  • Forbid overrides permit for handling policy conflicts
  • Order-independent evaluation to prevent bugs
  • Deterministic outcomes for reliable results

Setting up Verified Permissions

Before you can begin migrating your authorization policies, you need to establish the foundational infrastructure in Verified Permissions.

Creating your policy store

To illustrate the migration process, you will use a fictional document management application that uses OPA and Rego for authorization. The first step in migrating to Verified Permissions is creating a policy store. A policy store is a container for your Cedar policies and schema. You can create multiple policy stores for different applications or environments.

When creating a policy store, you choose between two validation modes:

  • STRICT mode: Requires a schema against which policies are validated
  • OFF mode: Allows policies without a schema (useful for initial testing)

For production migrations, STRICT mode is recommended because it provides better validation compared to OFF mode and can enable optimizations that reduce the entity data needed for authorization requests. You can create a policy store through the AWS Management Console, AWS Command Line Interface (AWS CLI), or programmatically using AWS SDKs. The following example uses the AWS CLI:

aws verifiedpermissions create-policy-store \
	--region us-east-1 \
	--validation-settings mode=STRICT \
	--description "Migration from OPA to Amazon Verified Permissions"

If the request is successful, you should see a JSON encoded response that looks like the following:

{
	"policyStoreId": "PSEXAMPLEabcdefg012345",
	"arn": "arn:aws:verifiedpermissions:us-east-1:123456789012:policy-store/PSEXAMPLEabcdefg012345",
	"createdDate": "2025-09-15T10:30:45.123456+00:00",
	"lastUpdatedDate": "2025-09-15T10:30:45.123456+00:00"
}

Make note of the policyStoreId from the response—you will need it for subsequent operations.

Defining your schema

In STRICT mode, Verified Permissions requires a Cedar schema that defines the types of entities in an authorization system. This schema serves several important purposes, including validating policies at creation time, enabling entity slicing performance optimizations, enabling better tooling and IDE support, and documenting your authorization model. The schema should define:

  • Entity types: The kinds of objects in your system (for example, users, roles, documents, and so on.)
  • Attributes: Properties that entities can have (for example, department, classification, and createdDate)
  • Actions: Operations that can be performed (for example, read, write, and delete)
  • Relationships: How entities relate to each other (for example, user belongs to role, document owned by user)

When designing a schema, you should consider how your current OPA input data maps to Cedar entities. For example, if your Rego policies access input.user.department, you will need a User entity type with a department attribute. The following is an example Cedar schema for your document management application:

{
	"MyApp": {
		"entityTypes": {
			"User": {
				"shape": {
					"type": "Record",
					"attributes": {
						"department": {"type": "String"},
						"jobLevel": {"type": "Long"},
						"email": {"type": "String"}
					}
				}
			},
			"Role": {
				"shape": {
					"type": "Record",
					"attributes": {"name": {"type": "String"}}
				}
			},
			"Document": {
				"shape": {
					"type": "Record",
					"attributes": {
						"owner": {"type": "Entity", "name": "User"},
						"classification": {"type": "String"},
						"createdDate": {"type": "String"}
					}
				}
			}
		},
		"actions": {
			"read": {"appliesTo": {"principalTypes": ["User"], "resourceTypes": ["Document"]}},
			"write": {"appliesTo": {"principalTypes": ["User"], "resourceTypes": ["Document"]}},
			"delete": {"appliesTo": {"principalTypes": ["User"], "resourceTypes": ["Document"]}}
		}
	}
}

To apply this schema to the policy store you created earlier using the AWS CLI, you can run the following command:

aws verifiedpermissions put-schema \
	--region us-east-1 \
	--policy-store-id YOUR_POLICY_STORE_ID \
	--definition file://schema.json

Ensure that you replace YOUR_POLICY_STORE_ID with the policyStoreId that was returned when you created your policy store.

You can view the visualized policy schema (shown in Figure 1) in the Verified Permissions console by going to Policy Store and choosing Schema.

Figure 1: Verified Permissions policy schema visualization

Figure 1: Verified Permissions policy schema visualization

Policy migration patterns

With your policy store and schema in place, you can now begin translating your Rego policies into Cedar policies, following common authorization patterns.

Pattern 1: Role-based access control

Role-based access control (RBAC) is one of the most used authorization patterns. In RBAC systems, users are assigned roles, and roles are granted permissions to perform actions on resources.

In your current Rego implementation, you might check if a user has a specific role in their roles array, then allow certain actions based on that role. Your Rego policy might look something like the following:

package rbac

import future.keywords.if
import future.keywords.in

default allow := false

allow if {
	input.user.roles[_] == "admin"
}

allow if {
	input.user.roles[_] == "editor"
	input.action in ["read", "write"]
}

allow if {
	input.user.roles[_] == "viewer"
	input.action == "read"
}

When migrating to Cedar, you will model this using entity relationships where users belong to role entities.

// Admin users can perform any action on any resource
permit (
	principal in MyApp::Role::"admin",
	action,
	resource
);

// Editor users can read and write on every resource
permit (
	principal in MyApp::Role::"editor",
	action in [MyApp::Action::"read", MyApp::Action::"write"],
	resource
);

// Viewer users can only read on every resource
permit (
	principal in MyApp::Role::"viewer",
	action == MyApp::Action::"read",
	resource
);

Migration approach
To successfully migrate your RBAC policies from Rego to Cedar, follow these steps:

  1. Define User and Role entity types in your schema
  2. Create permit policies for each role-action combination
  3. Use the Cedar in operator to check role membership
  4. Consider creating role hierarchies if you have nested roles

Key differences
Understanding the fundamental differences between Rego and Cedar’s approach to RBAC will help you design more effective policies:

  • Cedar uses entity relationships instead of checking array membership
  • Each permission becomes a separate, explicit policy
  • Role hierarchies are modeled through entity parent-child relationships

Pattern 2: Attribute-based access control

Attribute-based access control (ABAC) makes authorization decisions based on attributes of the user, resource, action, and environment. This is often more flexible than RBAC but can be more complex to implement.

In Rego, you would access various attributes from the input data and use them in policy conditions:

package abac

default allow := false
# Anyone can read public documents
allow if {
	input.action == "read"
	input.resource.classification == "public"
}

# Users can read internal documents from their department
allow if {
	input.action == "read"
	input.resource.classification == "internal"
	input.user.department == input.resource.department
}

# Users can write to documents they own
allow if {
	input.action == "write"
	input.resource.owner == input.user.id
}

Cedar handles this through entity attributes and policy conditions using the when and unless clauses.

// Anyone can read public documents. Blank ‘principal’ and ‘resource’ entities are wildcards that match everything
permit (
	principal,
	action == MyApp::Action::"read",
	resource
) when {
	resource.classification == "public"
};

// Users can read internal documents from their department
permit (
	principal,
	action == MyApp::Action::"read",
	resource
) when {
	resource.classification == "internal" &&
	principal.department == resource.department
};

// Users can write to documents they own
permit (
	principal,
	action == MyApp::Action::"write",
	resource
) when {
	resource.owner == principal
};

Migration approach
Migrating ABAC policies requires careful mapping of attributes from your Rego input structure to Cedar’s entity model:

  1. Identify the attributes used in your current policies
  2. Map these attributes to entity attributes in your Cedar schema
  3. Use when clauses in Cedar policies to implement attribute-based conditions
  4. Consider using context for environment-specific attributes (time, IP address, and so on)

Key differences
Cedar’s schema-driven approach to attributes provides several advantages over Rego’s dynamic attribute access:

  • Cedar requires attributes to be defined in the schema
  • Cedar schema validation helps catch attribute access errors at policy creation time
  • Complex attribute logic might need to be split across multiple policies

Pattern 3: Relationship-based access control

Relationship-based access control (ReBAC) grants permissions based on properties of the resource being accessed or relationships between the user and the resource (such as ownership). In Rego, this might be expressed as follows:

package rebac

import future.keywords.if
import future.keywords.in

# Allow document owners to perform any action
allow if {
	input.resource.type == "document"
	input.resource.owner_id == input.user.id
}

# Alternative: checking ownership through a separate ownership data structure
allow if {
	input.resource.type == "document"
	ownership := data.ownerships[input.resource.id]
	ownership.owner_id == input.user.id
}

In the preceding example, ownership is checked by comparing the owner_id attribute on the resource with the user’s ID. You might access this from the input data directly or from a separate data source. In Cedar, relationships are first-class concepts. The resource.owner == principal syntax directly checks if the principal is the owner entity referenced by the resource. This is more natural and type-safe than string comparisons:

permit (
	principal,
	action,
	resource is MyApp::Document
) when {
	resource.owner == principal
};

Migration approach
Converting relationship-based policies requires modeling your data relationships as Cedar entity references:

  1. Model resources as Cedar entities with relevant attributes
  2. Use resource attributes in policy conditions
  3. Model ownership and other relationships through entity references
  4. Use Cedar’s attribute access syntax for resource properties

Pattern 4: Time and context-based access

Many authorization systems need to consider contextual information such as time of day, user location, or request characteristics (IP address, user-agent, and so on). Expressing this in Rego would look like the following example:

package temporal

import future.keywords.if

default allow := false
# Allow read access during business hours (9 AM to 5 PM UTC)
allow if {
	input.action == "read"
	current_hour := time.clock([time.now_ns(), "UTC"])[0]
	current_hour >= 9
	current_hour <= 17
}

In Cedar, the same policy logic can be expressed like the following:

// Allow read access during business hours (9 AM to 5 PM UTC)
permit (
	principal,
	action == MyApp::Action::"read",
	resource
) when {
	context.currentTime.hour >= 9 &&
	context.currentTime.hour <= 17
};

Migration approach
Context-based policies in Cedar use the context parameter passed with each authorization request:

  • Use Cedar’s context feature for environment information
  • Pass time-based information in the authorization request context
  • Create policies with time-based conditions using context attributes
  • Consider caching implications for time-sensitive policies

Application integration changes

After migrating your policies to Cedar, you need to update your application code to integrate with Verified Permissions.

Updating authorization calls

The most significant change in your application code will be replacing OPA API calls with Verified Permissions API calls. Understanding the differences between these systems will help you plan your integration work effectively. The sample code in this section is written in Python.

Request structure changes

When calling OPA, you typically send a single JSON payload containing the authorization data. For example, your current OPA request might look like the following:

opa_request = {
	"input": {
		"user": {
			"id": "user123",
			"department": "engineering",
			"role": "editor"
		},
		"resource": {
			"id": "doc456",
			"type": "document",
			"owner": "user123"
		},
		"action": "read"
	}
}

response = requests.post(
	"http://opa-server:8181/v1/data/authz/allow",
	json=opa_request
)
authorized = response.json()["result"]

Verified Permissions requires a more structured approach where principals, resources, and actions are explicitly typed entities.

import boto3
import json
from typing import Dict, Any, List

class AuthorizationService:
	def __init__(self, policy_store_id: str, region: str = 'us-east-1'):
		self.client = boto3.client('verifiedpermissions', region_name=region)
		self.policy_store_id = policy_store_id
	
	#Check if a principal is authorized to perform an action on a resource.
	def is_authorized(self, principal: Dict[str, Any], action: str,
				resource: Dict[str, Any], context: Dict[str, Any] = None) -> bool:
		try:
			# Convert to Cedar entity format
			principal_entity = self._to_cedar_entity(principal, "User")
			resource_entity = self._to_cedar_entity(resource, "Document")
			action_entity = {"actionType": "MyApp::Action", "actionId": action}

			request = {
				'policyStoreId': self.policy_store_id,
				'principal': principal_entity,
				'action': action_entity,
				'resource': resource_entity
			}

			if context:
				request['context'] = {'contextMap': context}
				
			response = self.client.is_authorized(**request)
			return response['decision'] == 'ALLOW'
		except Exception as e:
			print(f"Authorization error: {e}")
			return False

	def _to_cedar_entity(self, entity_data: Dict[str, Any], entity_type: str) -> Dict[str, Any]:
		# Convert application data to Cedar entity format
		return {
			'entityType': f'MyApp::{entity_type}',
			'entityId': str(entity_data.get('id', '')),
			'attributes': entity_data
		}

The key differences in this new structure are:

  • Entity type declarations: Each entity (principal, resource) must include an entityType that matches your Cedar schema
  • Entity IDs: Every entity requires a unique entityId for identification
  • Action format: Actions are specified with an actionType and actionId rather than as simple strings
  • Separate context: Environmental information like time, IP address, or user agent is passed in a separate context parameter

Response handling changes

OPA returns whatever your Rego policy outputs, which could be a Boolean, a set of allowed actions, or complex nested data structures. Regardless of the policy outputs, Verified Permissions returns a consistent authorization decision structure:

# Amazon Verified Permissions response structure
{
	'decision': 'ALLOW',# or 'DENY'
	'determiningPolicies': [...],# Which policies determined the decision
	'errors': [...]# Errors that occurred during evaluation
}

Your application logic becomes simpler because you need to check for only ALLOW or DENY:

# Example usage

def check_document_access():
	auth_service = AuthorizationService('YOUR_POLICY_STORE_ID')

	# Example principal (user)
	user = {
		'id': 'user123',
		'department': 'engineering',
		'jobLevel': 5,
		'email': 'user@company.com'
	}

	# Example resource (document)
	document = {
		'id': 'doc456',
		'owner': 'user123',
		'classification': 'internal',
		'department': 'engineering'
	}

	# Example context
	context = {
		'currentHour': 14,# 2 PM
		'userAgent': 'MyApp/1.0'
	}

	# Check authorization
	can_read = auth_service.is_authorized(user, 'read', document, context)
	can_write = auth_service.is_authorized(user, 'write', document, context)

	print(f"User can read document: {can_read}")
	print(f"User can write document: {can_write}")

Error handling changes

OPA errors typically relate to policy evaluation issues or server connectivity problems. With Verified Permissions, you’ll encounter AWS-specific error types, as shown in the following example:

def is_authorized_with_error_handling(self, principal, action, resource, context=None):
	try:
		principal_entity = self._to_cedar_entity(principal, "User")
		resource_entity = self._to_cedar_entity(resource, "Document")
		action_entity = {"actionType": "MyApp::Action", "actionId": action}

		request = {
			'policyStoreId': self.policy_store_id,
			'principal': principal_entity,
			'action': action_entity,
			'resource': resource_entity
		}

		if context:
			request['context'] = {'contextMap': context}

		response = self.client.is_authorized(**request)
		return response['decision'] == 'ALLOW'
	except ClientError as e:
		error_code = e.response['Error']['Code']

		if error_code == 'ResourceNotFoundException':
			print(f"Policy store not found: {self.policy_store_id}")
		elif error_code == 'ValidationException':
			print(f"Invalid request: {e.response['Error']['Message']}")
		elif error_code == 'ThrottlingException':
			print("Request throttled - consider implementing exponential backoff")
		else:
			print(f"AWS error: {error_code}")

		# Fail closed - deny access on error
		return False

	except BotoCoreError as e:
		print(f"SDK error: {e}")
		return False

	except Exception as e:
		print(f"Unexpected error: {e}")
		return False

It’s important to note that the AWS SDK provides built-in retry logic for transient failures. The following is an example of how you can enable this feature:

# Configure retry behavior
config = Config(
	retries={
		'max_attempts': 3,
		'mode': 'adaptive'# Automatically adjusts retry behavior
	},
	connect_timeout=5,
	read_timeout=10
)

self.client = boto3.client(
	'verifiedpermissions',
	region_name=region,
	config=config
)

Data transformation

Your current authorization data needs to be transformed into Cedar’s entity format. This transformation happens in the _to_cedar_entity method shown in the error handling changes example, but let’s break down what’s involved.

Extracting entity information
Identify which parts of your current OPA input represent the principal, resource, and action. In most OPA implementations, this mapping is straightforward:

# Current OPA structure
opa_input = {
	"user": {...},# This becomes the principal
	"resource": {...},# This becomes the resource
	"action": "read"# This becomes the action
}

# Map to Cedar structure
principal = opa_input["user"]
resource = opa_input["resource"]
action = opa_input["action"]

Adding type information
Cedar requires explicit type declarations for all entities. You’ll need to determine the appropriate entity type based on your schema:

def _determine_entity_type(self, entity_data: Dict[str, Any]) -> str:
	# Determine the Cedar entity type based on entity data. This logic will be specific to your application.
	# Example: determine type based on entity structure or type field
	if 'role' in entity_data:
		return 'User'
	elif 'document_type' in entity_data:
		return 'Document'
	elif 'name' in entity_data and 'member_count' in entity_data:
		return 'Team'
	else:
		raise ValueError(f"Cannot determine entity type for: {entity_data}")

def _to_cedar_entity(self, entity_data: Dict[str, Any], entity_type: str = None) -> Dict[str, Any]:
	# Convert application data to Cedar entity format.
	if entity_type is None:
		entity_type = self._determine_entity_type(entity_data)

	return {
		'entityType': f'MyApp::{entity_type}',
		'entityId': str(entity_data.get('id', '')),
		'attributes': entity_data
	}

Structuring attributes
Cedar attributes must match your schema definition, so you might need to transform attribute names or values. This is also a chance to iterate and improve on naming. The following example demonstrates a code pattern to convert attribute names and values in code.

def _prepare_attributes(self, entity_data: Dict[str, Any], entity_type: str) -> Dict[str, Any]:
	#Prepare entity attributes according to Cedar schema requirements.
	attributes = {}

	if entity_type == 'User':
		# Map OPA field names to Cedar schema field names
		attributes = {
			'department': entity_data.get('dept', entity_data.get('department')),
			'jobLevel': int(entity_data.get('job_level', entity_data.get('jobLevel', 0))),
			'email': entity_data.get('email', entity_data.get('email_address'))
		}
	elif entity_type == 'Document':
		attributes = {
			'classification': entity_data.get('classification','internal'),
			'department': entity_data.get('department'),
			'owner': entity_data.get('owner', entity_data.get('owner_id'))
		}

	# Remove None values
	return {k: v for k, v in attributes.items() if v is not None}

Handling context
Separate environmental information from entity data. Context information should not be part of entity attributes.

def prepare_authorization_request(self, user_data, resource_data, action,
						request_metadata=None):

	# Entity data only includes intrinsic properties
	principal = {
		'id': user_data['id'],
		'department': user_data['department'],
		'jobLevel': user_data['job_level']
	}

	resource = {
		'id': resource_data['id'],
		'classification': resource_data['classification'],
		'owner': resource_data['owner']
	}

	# Context includes environmental and request-specific data
	context = {}
	if request_metadata:
		context = {
			'currentHour': request_metadata.get('hour'),
			'ipAddress': request_metadata.get('ip_address'),
			'userAgent': request_metadata.get('user_agent'),
			'requestTime': request_metadata.get('timestamp')
		}
	return self.is_authorized(principal, action, resource, context)

Testing your migration

The most critical aspect of migration testing is verifying that you have correctly migrated your authorization logic from Rego to Cedar. This requires systematic testing with comprehensive test cases.

Test case development

  1. Inventory current policies: Document your current Rego policies, including their decision logic, input data requirements, and expected outcomes for key test scenarios
  2. Create test scenarios: Develop test cases covering all policy branches and edge cases
  3. Capture current behavior: Run your test cases against OPA to establish baseline results
  4. Test Cedar policies: Run the same test cases against your Cedar policies
  5. Analyze differences: Investigate mismatches and adjust policies accordingly

When testing your policies, start with basic, straightforward policies before tackling complex ones. Test both positive cases (should be allowed) and negative cases (should be denied) and include edge cases and boundary conditions. Additionally, test with real production data (anonymized if necessary) to verify that your policies will work effectively when implemented in production.

It’s also important to compare the performance characteristics of your OPA setup with Verified Permissions across several key metrics. These metrics should include average response time for authorization requests, throughput (requests per second), and error rates under normal and stress conditions. During testing, test from the actual deployment environment used by your application and account for network latency to AWS services.

Finally, you should test the complete integration between your application and Verified Permissions across several critical areas. Your integration testing should cover authentication and AWS credential handling, request/response data transformation, error handling and fallback scenarios, connection pooling and resource management, and logging and monitoring integration to help ensure that the components work together seamlessly.

Deployment strategy

A successful migration from OPA to Verified Permissions requires careful planning and a risk-managed deployment approach that minimizes disruption to your production systems.

Phased migration approach

Rather than switching entirely to Verified Permissions in a single step, implement a phased migration to reduce risk.

  1. Parallel deployment: Deploy Verified Permissions alongside your existing OPA infrastructure and route a small percentage of authorization requests to the new system. Log and compare results between both systems, focusing on non-critical operations initially to minimize risk during the transition process.
  2. Gradual traffic shift: Gradually increase the percentage of requests routed to Verified Permissions while monitoring system performance, error rates, and authorization accuracy. Implement circuit breaker patterns to fall back to OPA if needed and expand to more critical operations as your confidence grows in the reliability and performance of the new system.
  3. Full migration: Route all traffic to Verified Permissions but keep OPA infrastructure running temporarily. Monitor system behavior under full production load and decommission OPA infrastructure after stability is confirmed and you are confident in the performance of the new system.

Feature flag implementation

Use feature flags to control the migration process through various flag types. These include percentage-based rollout to route a specific percentage of requests to the new system, user-based rollout to route specific users or user groups to the new system, operation-based rollout to route specific types of operations to the new system, and environment-based rollout to use different systems in different environments. Feature flags provide several benefits, including instant rollback capability if issues arise, granular control over migration scope, A/B testing of authorization decisions, and safe experimentation with new policies.

Troubleshooting common migration issues

When migrating from Rego to Cedar, you might encounter several common issues. In this section, you’ll find a troubleshooting guide.

Complex Rego logic translation

Some Rego policies use complex logic that doesn’t directly translate to Cedar. For example:

# Complex Rego policy with loops and comprehensions
allow {
	some i # The i variable is used to iterate over the items in the input.user.permissions array
		input.user.permissions[i].resource == input.resource.id
		input.user.permissions[i].actions[_] == input.action # The wildcard _ is used to iterate over the items in the actions array
}

In these scenarios, you should restructure your data model to work better with Cedar’s entity-based approach. For example, Cedar provides the in operator for improved performance and readability, as shown in the following example:

permit (
	principal,
	action,
	resource
) when {
	principal has permission &&
	resource in principal.permission.resources &&
	action in principal.permission.actions
};

Schema validation errors

Cedar requires strict schema compliance. Common errors include:

  • Undefined entity types
  • Missing required attributes
  • Type mismatches

You can use the schema validation tools provided by Verified Permissions to triage these issues.

Best practices and recommendations

Adhering to the following recommendations and best practices will help you build a maintainable, secure, and performant authorization system with Verified Permissions.

Policy design best practices

Well-designed policies are the foundation of a reliable authorization system and directly impact maintainability and security:

  • Schema-first design: Start with a comprehensive schema design before writing policies. A well-designed schema makes policy authoring more maintainable.
  • Basic, explicit policies: Favor multiple basic policies over complex monolithic ones. Cedar’s explicit permit/forbid model works best with clear, straightforward policy statements.
  • Meaningful naming: Use descriptive names for entity types, attributes, and policy descriptions. This improves understandability and maintainability of polices.
  • Documentation: Document your authorization model, including entity relationships, policy intentions, and business rules.

Migration strategy recommendations

Successfully migrating your authorization system requires balancing speed with safety through deliberate, incremental steps:

  • Incremental approach Don’t attempt to migrate everything at once. Start with basic, low-risk policies and gradually move to more complex scenarios.
  • Start in audit mode: Calculate and log the policy decisions for both systems. This will help you to compare results without impacting runtime authorization.
  • Comprehensive testing: Invest heavily in testing during migration. The cost of thorough testing is much less than the cost of authorization failures in production.
  • Parallel operations: Run both systems in parallel during migration to validate policy behavior and build confidence in the new system.
  • Team training: Ensure your team understands Cedar’s policy model and syntax. The conceptual differences from Rego require a learning investment.

Operational excellence

Maintaining a production authorization system requires ongoing attention to operational concerns beyond the initial migration:

  • Version control: Treat policies as code with proper version control, code review, and deployment processes.
  • Monitoring and alerting: Implement comprehensive monitoring from day one. Authorization issues can have significant business impact.
  • Regular audits: Periodically review and audit policies to verify that they still meet business requirements and security standards.
  • Performance optimization: Continuously monitor and optimize performance, particularly around caching strategies and policy efficiency.

Conclusion

Migrating from Open Policy Agent to Amazon Verified Permissions represents a significant step toward reducing operational overhead, improving runtime authorization performance and enhancing governance while maintaining robust authorization capabilities. The migration journey from OPA to Verified Permissions isn’t only about changing technologies, it’s an opportunity to improve your authorization architecture, enhance security practices, and build a more scalable foundation for your application’s access control needs.

Thank you for reading this post. If you have comments or questions about migrating from OPA to Verified Permissions, leave them in the comments section below.

Additional resources

The following links provide resources for further reading on the topics covered in this blog post:


If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.

Samuel Folkes

Samuel Folkes
Samuel is a Senior Security Solutions Architect at Amazon Web Services with more than 18 years of experience in software architecture, networking, and cybersecurity. Prior to AWS, he worked as a software engineer and led engineering teams across multiple industries. Samuel specializes in identity and access management and is passionate about using emerging technologies to drive business value.

05 Nov 18:49

Alex Soros, hijo de George Soros, felicita al nuevo alcalde progre de Nueva York.

by Fino

Alex Soros, hijo de George Soros, felicita al nuevo alcalde progre de Nueva York.

Alex Soros, hijo de George Soros, felicita al nuevo alcalde progre de Nueva York.

@AlexanderSoros enviado por @ThePoor_Bunny

Lord Draugr hizo un vídeo muy interesante sobre Soros.

Ver post completo: Alex Soros, hijo de George Soros, felicita al nuevo alcalde progre de Nueva York.

05 Nov 18:45

Cómo desarrollar el pensamiento crítico de los niños en la era de la desinformación

by Froku

Hoy, más que nunca, nuestros hijos crecen rodeados de información: vídeos, titulares, memes, mensajes reenviados... y no todo lo que leen o ven es cierto. Desde muy pequeños están expuestos a contenidos que mezclan realidad, opinión y, a veces, pura invención. Por eso, enseñarles a pensar por sí mismos es una necesidad educativa clave hoy en día. Pero ¿cómo se enseña el pensamiento crítico en casa, sin convertirlo en una clase teórica ni en un sermón?

etiquetas: pensamiento crítico, niños, desinformación

» noticia original (www.conmishijos.com)

05 Nov 18:44

Las personas que ven vídeos sin auriculares en público suelen carecer de estas 7 cualidades básicas, según la psicología

by denocinha

Ver a alguien reproduciendo vídeos o música sin auriculares en espacios públicos, como un tren silencioso, una sala de espera o un vagón donde la mayoría intenta leer o descansar, se ha convertido en una escena cada vez más habitual. Sin embargo, según diversos especialistas en comportamiento social, esta práctica va mucho más allá de la mala educación: suele evidenciar la ausencia de varias cualidades psicológicas básicas necesarias para convivir en espacios compartidos.

etiquetas: vídeos sin auriculares, cualidades básicas

» noticia original (www.ondacero.es)

05 Nov 18:42

Descubren cómo retrasar el alzhéimer de una forma muy sencilla tras estudiar a 300 personas durante 14 años

by Andaui

Un revelador estudio publicado en Nature cambiará para siempre el tratamiento de esta enfermedad neurodegenerativa.

etiquetas: alzhéimer, salud, estudio

» noticia original (www.nationalgeographic.com.es)

05 Nov 18:42

Renuncia a la estrella Michelín y se vuelve al pueblo

by juvenal

Óscar García, responsable del restaurante Baluarte de Soria, ha decidido cerrarlo y renunciar a la estrella Michelín que tiene, volviéndose a su tierra de Pinares para llevar El Balcón del Brezal. Ha reconocido que el desgaste en un restaurante de ese nivel es muy grande y que prefiere apostar por un restaurante donde se sienta feliz.

etiquetas: óscar garcía, baluarte, soria, michelín, restaurate, pinares

» noticia original (sorianoticias.com)

05 Nov 18:42

"Afín a Hamás" y a los terroristas del 11-S: ministros de Netanyahu, desbocados contra el nuevo alcalde de Nueva York

by Meinhard

El Gobierno de Israel se ha apresurado a censurar con acusaciones de grueso calibre la elección de Zohran Mamdani, candidato izquierdista y musulmán, como nuevo alcalde de Nueva York. Miembros del Ejecutivo de Benjamin Netanyahu lo han acusado de “afín a Hamás”, de “antisemita” e incluso de tener posturas similares a las de los responsables de los ataques del 11-S.

etiquetas: zohran mandani, ny nueva york, israel, hamas

» noticia original (www.eldiario.es)

05 Nov 18:42

El ICE entra en una guardería en Roscoe Village, Chicago

by karakol

Agentes del ICE forzaron la entrada en la guardería Rayito de Sol en Chicago y sacaron a la fuerza a parte del personal

etiquetas: ice, guardería, chicago

» noticia original (www.reddit.com)

05 Nov 18:12

“Lo que ves eres tú” 🪞| @rayramis #tengounplan

by Tengo un Plan
05 Nov 17:56

El PP propone prohibir el burka y el niqab en los espacios públicos de Barcelona

by Alejandro Salinas, Alejandro Salinas

El líder del Partido Popular en Barcelona, Daniel Sirera, ha presentado hoy una nueva campaña sobre políticas de inmigración en la ciudad. Lo ha hecho en el barrio del Raval, donde ha explicado que el objetivo del plan, llamado “Inmigración Ordenada”, es “acercar las políticas en materia de inmigración a todos los distritos y barrios de Barcelona, destacando la necesidad de una política seria, humana y eficaz que ponga orden en la llegada de inmigrantes a nuestra ciudad”.

En su intervención, Sirera ha detallado que el barrio Gòtic de Barcelona es el que tiene más porcentaje de extranjeros en España, con un 67%, seguido del Raval con un 53% y Santa Caterina, con un 46%. “Hemos querido empezar esta campaña en el distrito de Ciutat Vella porque simboliza la realidad de la inmigración en Barcelona”, ha apuntado el popular.

Los puntos del plan

El plan de Sirera pasa “por una inmigración legal, ordenada y humana”, “que quienes lleguen lo hagan con un empleo y con voluntad de integrarse”. En este sentido, ha asegurado que muchos vecinos “ya no reconocen sus barrios” y ha reclamado medidas de control tanto al Ayuntamiento como a la Generalitat y al Gobierno. Sirera ha destacado que la campaña que han presentado hoy “es en favor de la inmigración ordenada, no en contra de la inmigración”, y ha recordado que en su grupo “hay tres personas que vinieron de fuera”.

En el marco de la campaña, Sirera ha reclamado prohibir el uso del burka y el niqab en espacios públicos, centros educativos y sanitarios, “siguiendo el ejemplo de Portugal”. “Nadie puede ir por la calle con el rostro cubierto. Esta medida no solo garantiza la seguridad, sino también la dignidad y la igualdad de las mujeres. Quienes vienen a Barcelona deben adaptarse a nuestras normas, como nosotros lo hacemos cuando vamos a otros países”, ha argumentado.

Además, el líder del PP de Barcelona ha pedido a la Guardia Urbana que colabore con los Mossos d’Esquadra y la Policía Nacional para la identificación de mafias que trafican con personas y “la detección de inmigrantes en situación irregular sin trabajo ni medios de vida”.

Informes de arraigo

En el pleno municipal celebrado la semana pasada en el Ayuntamiento de Barcelona, Daniel Sirera presentó una propuesta para que los informes de arraigo incluyan las conductas incívicas. Concretamente, la proposición pretendía modificar los criterios con los que se elaboran los informes de arraigo social, incorporando infracciones o conductas incívicas reiteradas como un indicador de falta de integración en la comunidad.

“Conceder informes favorables a quienes ensucian, degradan el espacio público o incumplen reiteradamente la ley es una injusticia para los ciudadanos que sí se esfuerzan cada día por vivir en armonía”, expuso Sirera durante el pleno municipal. En la misma línea, el líder popular ha añadido hoy que “queremos informes desfavorables a quien no pueda demostrar su lugar de trabajo”.

La propuesta popular no salió adelante, pues no obtuvo los votos favorables necesarios para ello. Junts votó en contra a pesar “de compartir en parte el fondo de la cuestión”, y aseguró que es “razonable”. Por su lado, BComú tildó la propuesta de “populista y simplista”, asegurando que el efecto de la medida sería “perverso”. Por último, el gobierno de Collboni criticó que “los informes no son instrumentos para valorar conductas”.

05 Nov 17:56

Un grupo empresarial próximo a Orbán compra el tabloide más leído de Hungría a pocos meses de las elecciones

by Gloria Rodríguez-Pina

Cuando el ultraconservador Viktor Orbán fracasó en su intento de revalidar su primer mandato en las elecciones de 2002, sacó la conclusión, entre otras, de que la falta de apoyo mediático había sido fundamental. Desde entonces, ha ido modelando el paisaje mediático húngaro a su favor, para construir una maquinaria de comunicación y propaganda perfectamente engrasada con ayuda de empresarios e inversores afines. El último movimiento ocurrió la semana pasada con el anuncio de la compra del tabloide Blikk —el periódico de mayor tirada de Hungría—, junto con otros medios, por parte de un grupo empresarial leal al primer ministro populista.

Seguir leyendo

05 Nov 17:55

El exconcejal de Marbella Carlos Fernández pagará una multa para evitar la cárcel tras estar huido 19 años de la justicia

by Nacho Sánchez

Dos décadas después ha llegado una de las últimas condenas derivadas de la Operación Malaya contra la corrupción urbanística en Marbella. Carlos Fernández, concejal que escapó en verano de 2006 durante la segunda fase de detenciones policiales, ha aceptado este miércoles una condena de 4.095 euros de multa y una indemnización de 258.000 euros más intereses al consistorio marbellí, que como acusación particular reclamaba la restitución del dinero saqueado. Es el pacto que ha llegado con la fiscalía en la vista que se ha celebrado en la Audiencia Nacional y que evitará la celebración de juicio por el caso Saqueo II. El edil fue detenido el pasado 29 de octubre a su llegada al aeropuerto de Barajas desde Argentina, donde residía desde su huida, como ya había avisado su defensa con el objetivo de “ponerse a disposición de las autoridades judiciales de España”, según su defensa.

Seguir leyendo

05 Nov 17:46

Todos son ricos cuando tú cobras menos.

by Fino
05 Nov 17:07

González Amador en su alegato final: «O me voy de España, o me suіcіdo»

by Fino
05 Nov 17:07

Comentemos amablemente esta noticia.

by Fino
05 Nov 16:59

El coste de la programación reforzada post-apagón asciende a 422 millones en seis meses

by Agencias
El sistema eléctrico español ha invertido 422 millones de euros en programación reforzada tras el apagón de abril, representando el 2,34% del total.
05 Nov 16:58

⚠️ Enviar tu CV a lo loco hunde tu búsqueda de trabajo 👉🏼 5 pasos para usar bien la tecnología

by CandyCV

Muchos piensan que enviar el currículum en masa (el famoso “spray & pray”) aumenta sus probabilidades de conseguir trabajo. Pero es justo al revés: es uno de los errores que más caro salen al buscar empleo.

Algunos incluso pagan por software que envía cientos de currículums al día automáticamente, sin saber ni a qué ofertas se están postulando. Y lo entiendo, eso no suele ser la primera estrategia de la gente. Después de que lo hayas intentado de mejores maneras y te hayas expuesto a la mala educación y al silencio en muchos procesos, parece que solo queda recurrir a la red de arrastre.

Objetivamente, esa estrategia es contraproducente.

Los algoritmos de los portales de empleo (como LinkedIn, InfoJobs, Indeed o Tecnoempleo) aprenden de tu comportamiento: a qué ofertas te postulas, qué tienen en común, cuáles guardas, cuáles ignoras…

Con esas señales crean un “mapa” de tu perfil y deciden qué ofertas enseñarte y a qué empresas mostrarte.

Si tus candidaturas son muy distintas entre sí (por ejemplo roles muy diferentes, distintos niveles de experiencia…) el sistema no entiende quién eres profesionalmente.

Y ahí llegan los problemas: empieza a ofrecerte peores oportunidades, y dejas de aparecer en las búsquedas de las empresas que sí podrían interesarte.

Por eso, aplicar “a lo loco” puede acabar enterrando tu búsqueda de empleo, incluso si eres un buen candidato.

Alguna vez puede sonar la flauta, pero a largo plazo no suele salir bien. Nadie puede aprovechar una oportunidad si ni siquiera sabe dónde se está metiendo.

En este vídeo te explico cómo funcionan los algoritmos de recomendación de los portales de empleo, por qué tu comportamiento impacta en tu visibilidad y qué puedes hacer en su lugar:

🔹 5 pasos 🔹 para mejorar tus señales y usar la tecnología a tu favor en tu búsqueda de trabajo.

#empleabilidad #cv #candycv
05 Nov 16:56

“El hobbit”, de J. R. R. Tolkien

by pergamino

       En un agujero en el suelo, vivía un hobbit. No un agujero húmedo, sucio, repugnante, con restos de gusanos y olor a fango, ni tampoco un agujero seco, desnudo y arenoso, sin nada en que sentarse o que comer: era un agujero-hobbit, y eso significa comodidad.

El hobbit, o historia de una ida y de una vuelta (The Hobbit, or There and Back Again en ingles, usualmente abreviado como The Hobbit) es una novela fantástica del filólogo y escritor británico J. R. R. Tolkien.

Un buen día, el profesor J. R. R. Tolkien, cansado de corregir ensayos de promoción a sus estudiantes de la Universidad de Oxford, escribió en una hoja de papel: «In a hole in the ground there lived a Hobbit» [«En un agujero en el suelo, vivía un hobbit»]. Tolkien solía contarle historias a sus hijos, y esta frase (hoy conocida en tantas lenguas y que acabaría siendo el comienzo de la futura novela) le pareció un buen principio para la de esa noche, por eso la apuntó en un cuaderno; aunque nunca se le pasó por la cabeza escribir ninguna historia, ni mucho menos que fuera a publicarse.

Mucho tiempo después, Tolkien confesaría que «Por largo tiempo no hice nada al respecto, y durante algunos años no fui más allá del trazado del Mapa de Thrór. Pero se convirtió en El hobbit a principios de la década de 1930».

Finalmente la novela sería publicada el 21 de septiembre de 1937 en el Reino Unido por la editorial editorial George Allen & Unwin. El protagonista del la historia es Bilbo Bolsón, un hobbit que como como cualquier otro de su especie: no mide más de metro y medio, vive pacíficamente en la Comarca, y su máxima aspiración es disfrutar de los placeres sencillos de la vida (comer bien, pasear y charlar con los amigos). Pero su tranquilidad se ve interrumpida cuando el mago Gandalf y un grupo de trece enanos se presentan un día en su casa para involucrarlo en una aventura. Con la ayuda de un mapa misterioso, partirán hacia la Montaña Solitaria con el fin de rescatar el tesoro custodiado por Smaug el Dorado, un terrible y enorme dragón. A pesar de las reticencias de Bilbo a participar en esta búsqueda, pronto descubrirá una temeridad y una habilidad como ladrón que jamás hubiera sospechado poseer.

     Supongo que hoy en día los hobbits necesitan que se los describa de algún modo, ya que se volvieron bastante raros y tímidos con la Gente Grande, como nos llaman. Son (o fueron) gente menuda de la mitad de nuestra talla, y más pequeños que los enanos barbados. Los hobbits no tienen barba. Hay poca o ninguna magia en ellos, excepto esa común y cotidiana que los ayuda a desaparecer en silencio y rápidamente, cuando gente grande y estúpida como vosotros o yo se acerca sin mirar por dónde va, con un ruido de elefantes que puede oírse a una milla de distancia. Tienden a ser gruesos de vientre; visten de colores brillantes (sobre todo verde y amarillo); no usan zapatos, porque en los pies tienen suelas naturales de piel y un pelo espeso y tibio de color castaño, como el que les crece en la cabeza (que es rizado); los dedos son largos, mañosos y morenos, los rostros afables, y se ríen con profundas y jugosas risas (especialmente después de cenar, lo que hacen dos veces al día, cuando pueden).

Debido a su enorme éxito, los editores pidieron a Tolkien una continuación de la historia, que sería bautizada como El señor de los anillos. Su cambio a un tono alejado del infantil provocó que El hobbit tuviera que ser modificado ligeramente para que ambas historias coincidieran mejor. La segunda edición de 1951 (quinta reimpresión) contiene una importante revisión del capítulo V, «Acertijos en las tinieblas», que alinea la historia de El hobbit con su continuación. Tolkien hizo algunas revisiones más para la edición americana, publicada por Ballantine Books en febrero de 1966 y también para la tercera edición británica (decimosexta reimpresión), publicada por George Allen & Unwin ese mismo año.

El hobbit es un libro excelente para introducir tanto a jóvenes lectores como a adultos en el mundo de la fantasía, estando considerado como uno de los libros de Tolkien más influyentes de nuestro tiempo, y en el que destacan, además, una serie de valores como la amistad, el valor o la familia. Con su publicación, hace ya ochenta y ocho años, nació un nuevo género literario, conocido como la fantasía épica.

Ha sido adaptada a la radio, al cómic, los videojuegos y el cine. La trilogía de El hobbit, la adaptación para la gran pantalla, comprende tres películas épicas de fantasía y aventuras: El hobbit: un viaje inesperado (2012), El hobbit: la desolación de Smaug (2013) y El hobbit: la batalla de los cinco ejércitos (2014).

    Precuela de la trilogía El señor de los anillos, obra de J.R.R. Tolkien. En compañía del mago Gandalf y de trece enanos, el hobbit Bilbo Bolsón emprende un viaje a través del país de los elfos y los bosques de los trolls, desde las mazmorras de los orcos hasta la Montaña Solitaria, donde el dragón Smaug esconde el tesoro de los Enanos. Finalmente, en las profundidades de la Tierra, encuentra el Anillo Único, hipnótico objeto que será posteriormente causa de tantas sangrientas batallas en la Tierra Media. (FilmAffinity)

    El hobbit: La desolación de Smaug continua la aventura de Bilbo Bolsón en su viaje con el mago Gandalf y trece enanos liderados por Thorin Escudo de Roble en una búsqueda épica para reclamar el reino enano de Erebor. En su camino toparán con multitud de peligros y harán frente al temible dragón Smaug. (FilmAffinity)

    Después de haber recuperado el reino del Dragón Smaug en la montaña, la Compañía ha desencadenado, sin querer, una potencia maligna. Un Smaug enfurecido vuela hacia la Ciudad del Lago para acabar con cualquier resto de vida. Obsesionado con las enormes riquezas en su poder, el rey enano Thorin se vuelve codicioso, mientras Bilbo intenta hacerle entrar en razón haciendo algo desesperado y peligroso. Pero hay aún mayores peligros por delante. Sin la ayuda del mago Gandalf, su gran enemigo Sauron ha enviado legiones de orcos hacia la Montaña Solitaria en un ataque épico. Cuando la oscuridad se cierna sobre ellos, las razas de los Enanos, Elfos y Hombres deberán decidir si unirse o ser destruidos. Bilbo se encontrará así en la batalla épica de los Cinco Ejércitos, donde el futuro de la Tierra Media está en juego. (FilmAffinity)

SINOPSIS

Cuando alrededor de 1930, J.R.R. Tolkien comenzó a escribir El hobbit, hacía ya diez años que trabajaba en el vasto panorama mitológico de El libro de los relatos, que más tarde se llamaría El silmarillion. Así como esas crónicas tempranas narraban los mitos inmemoriales de la Primera y Segunda Edad, Tolkien pronto advirtió que El hobbit iba ordenándose de algún modo como un relato de la Tercera Edad (Gandalf habla del Nigromante en las primeras páginas), aunque las inesperadas aventuras de un pacífico hombre del campo no parecieran tener mucha relación con las vastas y oscuras mitologías de la Tierra Media. El estilo directo y lineal, con alusiones (que el autor deploró más tarde) a un público infantil, no impide la poderosa irrupción –unas pocas veces en términos de comedia– de los grandes temas tolkienianos (el poder, la codicia, la guerra, la muerte) que reaparecerían en una dimensión a menudo obviamente épica en El señor de los anillos.

La historia narra el viaje de un hobbit llamado Bilbo Bolsón (tío de Frodo, uno de los protagonistas principales de El señor de los anillos), al que no le gustan las aventuras, a la Montaña Solitaria en busca del tesoro robado por el dragón Smaug años atrás. Todo empieza un inesperado día en el que Bilbo recibe la visita de Gandalf el Gris junto con 13 enanos, entre los que se cuenta a Thorin, Escudo-de-Roble, a cuya familia le fue robado el tesoro. Algunos de los hechos narrados en El hobbit influirán en los acontecimientos posteriores de El señor de los anillos.

     Cuando Bilbo abrió los ojos, se preguntó si en verdad los habría abierto; pues todo estaba tan oscuro como si los tuviese cerrados. No había nadie cerca de él. ¡Imaginaos qué terror! No podía ver nada, ni oír nada, ni sentir nada, excepto la piedra del suelo.

    Se incorporó muy lentamente y anduvo a tientas hasta tropezar con la pared del túnel; pero ni hacia arriba ni hacia abajo pudo encontrar nada, nada en absoluto, ni rastro de trasgos o enanos. La cabeza le daba vueltas y ni siquiera podía decir en qué dirección habrían ido los otros cuando cayó de bruces. Trató de orientarse de algún modo, y se arrastró largo trecho hasta que de pronto tocó con la mano algo que parecía un anillo pequeño, frío y metálico, en el suelo del túnel. Éste iba a ser un momento decisivo en la carrera de Bilbo, pero él no lo sabía. Casi sin darse cuenta se metió la sortija en el bolsillo. Por cierto, no parecía tener ninguna utilidad por ahora. No avanzó mucho más; se sentó en el suelo helado, abandonándose a un completo abatimiento. Se imaginaba friendo huevos y panceta en la cocina de su propia casa —pues alcanzaba a sentir, dentro de él, que era la hora de alguna comida—, pero esto sólo lo hacía más miserable

TOLKIEN, J. R. R.

John Ronald Reuel Tolkien nació el 3 de enero en Bloemfontein en el Estado Libre de Orange. A principios de 1895, su madre, agotada por el clima, regresó a Inglaterra con Ronald y su hermano pequeño, Hilary. Tras el fallecimiento de su padre, a causa de unas fiebres reumáticas, él y su familia se establecieron brevemente en Sarehole, cerca de Birmingham. Esta hermosa zona rural causó una honda impresión en el joven Ronald, y sus efectos pueden verse en su escritura y en algunos de sus cuadros.
Mabel falleció en 1904, y los hijos quedaron a cargo del padre Francis Morgan, un sacerdote del Oratorio de Birmingham. En el King Edward’s School, Ronald desarrolló su amor por las lenguas; más adelante inventaría sus propios idiomas. También por esta época conoció a Edith Bratt, con quien se casó en 1916.

Cuando estalló la primera guerra mundial en 1914, Ronald era todavía un estudiante en Oxford. Se graduó al año siguiente, con un sobresaliente en Inglés y poco después fue enrolado como teniente en los Lancashire Fusiliers. En 1916 combatió en la batalla del Somme, pero cayó víctima de la fiebre de las trincheras y fue devuelto a casa como no apto para el servicio.

Tolkien fue uno de los mejores filólogos de su época y gran parte de su vida laboral transcurrió en Oxford, primero como profesor de anglosajón y luego como profesor de lengua inglesa y literatura. Al mismo tiempo, en privado, trabajaba en el gran ciclo de mitos y leyendas que más adelante se publicaría con el título de El Silmarillion. Edith y él tuvieron cuatro hijos, y en parte fue para ellos por lo que escribió el cuento El hobbit, publicado por Allen & Unwin en 1937. Tuvo tanto éxito que el editor quiso tener en seguida una secuela, pero no fue hasta 1954 que apareció el primer volumen de la obra maestra de Tolkien, El Señor de los Anillos, con un éxito inmediato. Su enorme popularidad sorprendió a Tolkien.

Ronald y Edith Tolkien se mudaron a Bournemouth al llegar a la vejez, pero cuando Edith murió en 1971, Tolkien regresó a Oxford. Ronald Tolkien falleció el 2 de septiembre de 1973, tras una breve enfermedad.

FUENTES

  • El hobbit
  • Wikipedia

05 Nov 16:52

YouTube empeora: su nuevo cambio en publicidad no te va a gustar

by Pablo, Hernando

No todos los cambios son para mejor, prueba de ello es el que se avecina en la publicidad de YouTube. No se trata de una novedad que revolucionará la plataforma, pero sí en un detalle que, a priori, parece poca cosa, pero que vas a notar en el día a día, para mal. Hablamos de sus nuevos anuncios horizontales sin X para cerrar el panel de compra.

Hasta ahora, antes de reproducir un vídeo o durante la reproducción, pueden mostrarse anuncios horizontales, los cuales ocupan toda la pantalla, dividiéndose en dos mitades, pero que pueden cerrarse para navegar por la app. El cambio consiste en que dejarás de poder cerrar la mitad derecha, en la que se encuentra el enlace de compra.

Así queda el antes vs después

Cuando YouTube te muestra un anuncio, si tienes el móvil en horizontal, este cubre toda la pantalla. Dicho spot se divide en dos mitades: en la izquierda se encuentra el vídeo del producto que se anuncia y en la derecha, un botón para comprar el producto. En la parte derecha, donde está el botón de compra, en la esquina superior hay una X, si pulsas en esta X cerrarás la mitad derecha, dejando exclusivamente el vídeo del producto.

Según ha revelado el experto en marketing digital Anthony Higman, en su cuenta de X (red social anteriormente conocida como Twitter). Tal y como muestra, y también ha recogido el medio Android Authority, YouTube ha estrenado un nuevo panel con un diseño distinto, en el que únicamente hay dos botones:

  • Shop now (Cómpralo ahora): el que ya había anteriormente y te redirige a la tienda en la que se vende el producto anunciado
  • Visit advertirser (Visitar al anunciante): te envía a la web del anunciante.
Nuevo panel (arriba) vs Viejo panel (abajo)
Nuevo panel (arriba) vs Viejo panel (abajo)

El segundo botón, Visit advertiser, se encuentra donde anteriormente se hallaba el botón X, para cerrar el anuncio, junto a otros botones que te permitían señalar que este anuncio no te gustaba o compartir el enlace del anuncio. Previsiblemente, también podrás hacer estas dos últimas acciones, pero pulsando en los tres puntitos, que ahora se encuentran encima del vídeo y no justo al lado de la X.

Como hemos dicho, no se trata de un cambio revolucionario, pero sí en algo que vas a notar, para peor. YouTube cada vez tiene más anuncios y el no poder cerrar, al menos la parte más intrusiva, es algo que no resulta positivo. Si no quieres anuncios en YouTube, entonces debes suscribirte a YouTube Premium, que cuesta 13,99 euros al mes.

05 Nov 15:47

¿Cómo influye en el trabajo del psicólogo su personalidad?

by Instituto Mensalus
La labor del psicólogo no reside únicamente en dominar técnicas y teorías; también está profundamente marcada por su manera de ser, su estilo interpersonal y su forma de relacionarse con los demás. Y es que la personalidad del profesional, esa combinación de rasgos estables, predisposiciones emocionales, valores y actitudes, ejerce un papel silencioso pero contundente en la calidad del vínculo terapéutico, en la forma de intervenir y en los resultados obtenidos en la práctica clínica. Por eso, **una parte del trabajo de los psicólogos es anticiparse a los efectos que su personalidad tiene en su manera de trabajar**. ## Los efectos de la personalidad del psicólogo en su trabajo Partiendo de nuestra experiencia y de la evidencia científica disponible, aquí te explicaremos cómo se manifiesta esa influencia de la personalidad en distintos ámbitos del ejercicio del profesional del psicólogo. ### 1. Rasgos de personalidad y su impacto en la alianza terapéutica La alianza terapéutica —entendida como el vínculo colaborativo y de confianza entre terapeuta y paciente— es uno de los predictores más sólidos del buen desarrollo de la terapia. En este escenario, los rasgos de personalidad del psicólogo actúan como “clima relacional” que modula la captación de la otra persona, la seguridad percibida, la apertura al diálogo y la sostenibilidad del vínculo. Por ejemplo, **investigaciones encuentran que terapeutas con niveles más altos de [amabilidad](/personalidad/amabilidad) (agreeableness) o extraversión tienden a recibir valoraciones más positivas por parte de sus clientes en cuanto a alianza**. Sin embargo, los datos también muestran que no siempre “más” de un rasgo es mejor; por ejemplo, se observó que altos niveles de apertura (openness) en psicoterapeutas cognitivo-conductuales se asociaron a resultados menos favorables. Esto sugiere que la personalidad del profesional no es un factor lineal de “mejor cuanto más” sino que debe considerarse en interacción con la modalidad terapéutica, el estilo del terapeuta y las características del paciente. ### 2. Influencia de la personalidad en la elección de orientación y en el estilo de intervención Más allá del vínculo, la personalidad del psicólogo interviene en la forma de ejercer. En qué enfoque se siente cómodo, cómo organiza la sesión, qué tipo de método prefiere, cómo muestra sus propias actitudes y motivaciones. Estudios señalan que los rasgos de personalidad están asociados con la elección de la orientación terapéutica y con las habilidades interpersonales desplegadas. Por ejemplo, un profesional con fuerte tendencia a la planificación, control y orden (rasgos próximos a la responsabilidad o “conscientiousness”) podría sentirse más a gusto en enfoques estructurados, frente a otro con mayor apertura o espontaneidad que prefiera modalidades más explorativas. La noción de “Estilo Personal del Terapeuta” (PST, por sus siglas en inglés) recoge esta idea: se entiende como ese conjunto singular de modos de operar que el psicólogo imprime a su trabajo, con dimensiones como flexibilidad/rígido, emotividad/distance, compromiso/neutralidad. Comprender este estilo es relevante porque permite visualizar cómo la forma de “ser” del profesional se traduce en la forma de “hacer”. ### 3. Atención a la persona del terapeuta: autoreflexión, regulación emocional y auto-conciencia La personalidad del psicólogo no es exclusivamente un factor “positivo” u “inevitable”: también requiere un trabajo consciente. La autoreflexión, la capacidad de reconocer prejuicios propios, la regulación emocional y la autoconciencia se revelan clave para que los rasgos personales no se conviertan en obstáculos. Una investigación con terapeutas en formación mostró que quienes desarrollaron mayor conciencia de sus propias emociones, valores y sesgos mejoraron su involucramiento interpersonal. Otro trabajo apunta a que la competencia técnica o los años de experiencia, cuando se controlan los rasgos de personalidad, no se relacionan directamente con mejores resultados clínicos. Esto implica que la dimensión “humana” del profesional —cómo se relaciona consigo mismo y con el otro— es tan relevante como la técnica. Terapia, en este sentido, no solo es lo que el psicólogo hace, sino cómo lo hace. ### 4. Concordancia entre terapeuta y paciente: la interacción de personalidades La personalidad del psicólogo cobra aún más sentido cuando se sitúa en relación con la del paciente. No se trata de elegir a pacientes que “encajen” necesariamente, sino de ser consciente de cómo diferentes combinaciones pueden favorecer o entorpecer el proceso. Hay estudios que muestran que la similitud en rasgos entre terapeuta y paciente (por ejemplo, niveles parecidos de neuroticismo o responsabilidad) puede favorecer mejores resultados. Igualmente, **si el terapeuta tiene un estilo de apego poco seguro y el paciente también, se incrementa el riesgo de rupturas en la relación terapéutica**. Este tipo de hallazgos subraya que el factor “relacional” va más allá de la técnica y que la “co-construcción” entre dos personas es central en la psicoterapia. ### 5. Implicaciones para la formación, supervisión y práctica profesional ¿Qué implicaciones tiene todo esto para el psicólogo que ejerce o está formándose? Primero, reconocer que los rasgos de personalidad no son simplemente “dados” que no pueden cambiarse, sino que se pueden acompañar con consciencia, reflexión y supervisión. La formación no debe limitarse al aprendizaje de técnicas, sino incorporar el desarrollo de habilidades de autoreflexión, regulación emocional, actualización del estilo profesional. Segundo, la supervisión puede incluir la observación del estilo personal, la contratransferencia, la influencia de la propia historia del terapeuta. Tercero, en la práctica, valorar la propia sintonía personal con los pacientes, los ajustes necesarios, el grado de flexibilidad —no caer en rigidez ni en evasión—. Finalmente, comprender que la personalidad del psicólogo puede ser un recurso o un límite: trabajada con consciencia, puede facilitar vínculos más auténticos, pero desatendida puede generar bloqueos, rupturas o desgaste. ## Una parte del autoconocimiento del terapeuta En definitiva, la personalidad del psicólogo es un elemento que atraviesa su práctica de forma sutil pero efectiva, y por ello el profesional debe tenerla en cuenta para compensar sus predisposiciones y sesgos. **No basta con “tener buenas técnicas”**: el modo en que el profesional se relaciona consigo mismo y con los otros, la forma en que regula sus emociones, reflexiona sobre su trabajo y adapta su estilo relacional, influye en la calidad del vínculo, en la elección de métodos y, de forma más indirecta, en los resultados terapéuticos. No existe un “perfil ideal” de personalidad universal para terapeutas, pero sí cabe afirmar que la consciencia de uno mismo, la flexibilidad interpersonal y la capacidad de ajuste al otro y al contexto forman parte de las competencias esenciales. Para el psicólogo comprometido con la excelencia clínica, cultivar la persona que está detrás del rol profesional es tan relevante como perfeccionar el dominio técnico. @professional(2062724) En este sentido, si quieres aprender las técnicas y estrategias más útiles para cultivar el autoconocimiento y aplicarlo al rol profesional del terapeuta, **el [Master en Psicoterapia Integradora de Instituto Mensalus](https://mensalus.es/formacion/master-en-psicoterapia-integradora/){rel="nofollow"}** es perfecto para ti. Este programa de formación está disponible en sus versiones online y presencial en uno de los centros de atención a la salud mental más importantes de Barcelona, y te permitirá aprender en grupos muy reducidos con el apoyo de un equipo docente cuya principal ocupación es atender pacientes.
05 Nov 15:30

El aerogenerador eólico más grande del mundo se rompe cuando se somete a pruebas extremas

by El_dinero_no_es_de_nadie

El fabricante afirmaba que la turbina había sido diseñada para operar en condiciones extremas, incluyendo ráfagas de viento de hasta 79,8 m/s, cercanas a las de un tifón de categoría cinco, lo que le otorgaría una clara ventaja en entornos particularmente agresivos como los mares del sur de China. Sin embargo, apenas iniciadas las pruebas, el aparato sufrió un severo contratiempo: varias de sus gigantescas palas se fracturaron y se desprendieron durante el ensayo.

etiquetas: aerogenerador, eolico, pruebas, palas

» noticia original (www.hibridosyelectricos.com)

05 Nov 15:30

Mamdani desafía a Trump: “Nueva York seguirá siendo una ciudad de inmigrantes, y desde esta noche, la gobierna un inmigrante”

by oghaio

“En este momento de oscuridad política, seremos la luz”, prometió Mamdani, en referencia a Trump, antes de añadir: “Soy musulmán. Soy socialista democrático. Y, lo más grave de todo, me niego a pedir disculpas por ello”.

etiquetas: mamdani, discurso, victoria, trump, nueva york, inmigrantes

» noticia original (elpais.com)

05 Nov 15:29

Salen a la luz las primeras exigencias de Abascal a Feijóo para la sucesión de Mazón: ni pacto verde ni inmigrantes

by Gante_hrm

Empiezan a conocerse los primeros detalles de las negociaciones entre el PP y Vox para escoger el candidato que sustituirá al ex president Carlos Mazón. Por lo pronto, la extrema derecha ha pedido a los de Alberto Núñez Feijóo rechazar el pacto verde y la inmigración “masiva”, según adelanta este miércoles La Vanguardia.

etiquetas: abascal, feijoo, pp, vox, valencia

» noticia original (www.elplural.com)

05 Nov 15:29

Venezuela recurre a Rusia en busca de misiles balísticos capaces de alcanzar objetivos estadounidenses si la crisis se agrava

by Free_palestine

El alto legislador ruso Alexei Zhuravlyov declaró que Moscú ya suministra armas a Venezuela y no ve ningún obstáculo para transferir el nuevo misil balístico Oreshnik o los misiles de crucero Kalibr a Caracas.

etiquetas: venezuela, crisis, eeuu, armas, rusia

» noticia original (galaxiamilitar.es)

05 Nov 15:29

Un periodista preguntó por qué Israel no reconstruye Gaza. Fue despedido (ENG)

by Ratoncolorao

Gabriele Nunziati, un reportero afincado en Bruselas que cubría la UE para la agencia de noticias romana Nova, declaró que recibió un aviso de despido apenas un mes después de convertirse en corresponsal.

etiquetas: gabriele nunziati, gaza, despedido, israel, sionismo

» noticia original (theintercept.com)

05 Nov 15:28

Núcleo Nacional ofrece a sus 28.500 seguidores en Telegram un manual de adoctrinamiento de las Juventudes Hitlerianas

by luspagnolu

El grupo neonazi inaugura su "club de lectura" con un texto elaborado por el dirigente nazi Helmut Stellrecht, quien desempeñaba tareas de educación militar para jóvenes.

etiquetas: núcleo, nacional, seguidores, telegram, manual, juventudes, hitlerianas

» noticia original (www.publico.es)

05 Nov 15:13

Pujol alega que tiene «marcadores de alzhéimer», deterioro cognitivo grave y demencia dos semanas antes del juicio

by Cristian Reino

El expresidente de la Generalitat reclama poder declarar por vía telemática si se determina que puede ser juzgado

05 Nov 15:12

Ah vale… entiendo…

by Fino

Ah vale... entiendo...

En los últimos meses, se ha extendido en redes sociales la narrativa de que la comunidad internacional oculta un «genocidio» que se perpetra en Nigeria contra los cristianos. El presidente de Estados Unidos, Donald Trump, se ha unido a esta postura al amenazar al país africano con una intervención militar si el Gobierno no detiene «la matanza de cristianos». Sin embargo, los expertos consultados por VerificaRTVE coinciden en que no se puede hablar de genocidio ni de violencia religiosa en Nigeria, sino que se trata de ataques terroristas que asesinan tanto a cristianos como a musulmanes y de enfrentamientos entre bandas armadas que atacan por motivos que no tienen nada que ver con la religión o por conflictos entre etnias por la tierra. @rtve

Ah vale... entiendo...

Ver post completo: Ah vale… entiendo…

05 Nov 15:11

Being Liked Is More Important Than Being Smart

by Lewis Howes

🔔 Subscribe for more great content: https://www.youtube.com/lewishowes

Listen to this episode on the go!
🍎 Apple Podcasts: https://podcasts.apple.com/us/podcast/the-school-of-greatness/id596047499
🟢 Spotify: https://open.spotify.com/show/07GQhOZboEZOE1ysnFLipT?si=a03d916bade54d4f

💰 get my NEW YORK TIMES BESTSELLING book "Make Money Easy" today!https://lewishowes.com/moneyyou
📙 get my NEW YORK TIMES BESTSELLING book "The Greatness Mindset" today! https://lewishowes.com/gmyo
📤 sign up for my FREE newsletter https://lewishowes.com/greatnessdelivered

Follow Lewis!
Instagram: https://www.instagram.com/lewishowes/
Tiktok: https://www.tiktok.com/@lewis
Facebook: https://www.facebook.com/lewishowes/
Twitter: https://twitter.com/LewisHowes
💻 Website: http://lewishowes.com/
📲 For more Greatness text PODCAST to +1 (614) 350-3960

Get More Greatness!
Greatness Clips: https://www.youtube.com/@GreatnessClips
Spanish: https://www.youtube.com/@LewisHowesEspañol
Portuguese: https://www.youtube.com/@LewisHowesPortugues
Lewis Howes Shorts: https://www.youtube.com/@lewishowesshorts

#greatness #inspiration #motivation #teamwater
05 Nov 15:10

El práctico consejo de Roosevelt para evitar que las criticas te afecten

by Jennifer Delgado

La entrada El práctico consejo de Roosevelt para evitar que las criticas te afecten se publicó primero en Rincón de la Psicología por Jennifer Delgado.

como evitar que las criticas te afecten

Todos hemos sentido ese nudo en el estómago al recibir una crítica. A veces, es una sensación muy ligera, casi imperceptible; pero otras veces parece atravesarnos como un cuchillo afilado. La sociedad del “feedback” constante, las redes sociales y la cultura de la opinión instantánea nos ha dejado particularmente expuestos a las críticas por cualquier detalle que se aleje de lo normativo. 

Cuando todos se creen con derecho a opinar, es prácticamente imposible escapar de las críticas, pero podemos prepararnos para gestionar mejor su impacto y evitar que nos arrebaten la paz interior.

El problema no es la crítica, sino cómo la interpretamos

Las críticas son inevitables. Nadie, por muy ejemplar o perfeccionista que sea, se libra de los comentarios negativos, juicios ajenos o correcciones. De hecho, la crítica constructiva es beneficiosa porque nos ayuda a crecer al señalar nuestros puntos ciegos, esas debilidades que no somos capaces de ver.

La crítica destructiva, en cambio, solo busca herir, menospreciar o manipular. Por desgracia, tampoco podemos escapar de ese tipo de dardos envenenados. La buena noticia es que su “veneno” solo nos afectará en la medida en que permitamos que haga mella en nuestra identidad.

El problema surge cuando percibimos la crítica como una amenaza para nuestro ego. Cuando le damos tanto valor que acaba afectando nuestra autoestima. O cuando le hacemos tanto caso que olvidamos que es tan solo una opinión, no una verdad inamovible sobre nosotros.

La crítica nos afecta cuando toca alguna fibra sensible. Cuando sentimos que pone en entredicho nuestra identidad y valía. Cuando le damos demasiado peso a la opinión ajena y nos volvemos excesivamente dependientes de la aprobación externa. Solo entonces esos comentarios negativos pueden desestabilizarnos.

El consejo de Roosevelt para protegernos de las críticas

El 23 de abril de 1910, Theodore Roosevelt, entonces presidente de Estados Unidos, dio un discurso en la Sorbona de París, conocido como “El hombre en la arena”.

No es el crítico quien cuenta,
ni aquél que señala cómo el fuerte tropieza,
o dónde el realizador de hazañas podría haberlo hecho mejor.
El reconocimiento pertenece al hombre que está en la arena,
con el rostro manchado de polvo, sudor y sangre;
que lucha valientemente; se equivoca,
y da un traspié tras otro,
pues no hay esfuerzo sin error ni fallo
”.

Roosevelt sabía muy bien de qué hablaba ya que durante sus mandatos fue extensamente criticado. Cuando impulsó el New Deal, por ejemplo, los demócratas lo criticaron por no haber ido más lejos y los republicanos por haber ido demasiado lejos.

Y es que atreverse a hacer algo y desafiar la pasividad implica convertirse en blanco fácil. Quien actúa deja de ser invisible. Y en cuanto alguien se expone, aparecen los juicios: unos dirán que ha hecho demasiado, otros que no ha hecho suficiente. Pero muchas veces lo que molesta no es tanto la acción en sí, sino el recordatorio incómodo de que es posible hacer algo mientras muchos eligen no hacer nada.

La crítica, el precio de atreverse

Cada vez que alguien te critique, recuerda que no existe crecimiento sin exposición. Cuando decides actuar, explorar, crear o desarrollar algo, inevitablemente te arriesgarás a cometer errores y te expondrás a la mirada crítica del otro.

Toda acción acarrea cierta vulnerabilidad. El momento en que el que algo deja de ser una idea dentro de tu cabeza y se vuelve acto, comienza a ser visible y, por tanto, juzgable. Esa exposición tiene un coste inevitable: ser interpretado, comentado y cuestionado. Pero esa también es la condición para el crecimiento.

Por consiguiente, que te critiquen no es algo necesariamente negativo – aunque a veces nos cueste verlo así. A veces solo puede ser la señal de que estás viviendo y atreviéndote, allí donde otros prefieren quedarse en la falsa seguridad que aporta la zona de confort, analizando con precisión quirúrgica los errores de quienes realmente se ponen manos a la obra.

Una vez que entiendas eso, también podrás asumir una distancia psicológica de los juicios y opiniones. Valorarlos con la mente tranquila, usar lo que sea aprovechable y descartar lo que no sea útil. Así podrás evitar que las críticas te afecten más de lo que deberían.

La entrada El práctico consejo de Roosevelt para evitar que las criticas te afecten se publicó primero en Rincón de la Psicología por Jennifer Delgado.